I have a custom component InlineAutocomplete. No matter what I do my pic value and SelectedPIC value are always null when I do validation and unsure why it is.
The component does render correctly, but can't get my parameter back with the values set correctly.
Usage as follow:
<InlineAutocomplete TItem="PIC"
Value="@pic"
Selected="@SelectedPIC"
Data="@PICs"
Property="@((item) => item.PICNumber)" />
My component:
<div class="inline-autocomplete">
<input @oninput="(e)=> SuggestItem(e)" type="text" @bind-value="@Value" class="overlap inline-autocomplete-input " />
<input readonly class="overlap inline-autocomplete-label" value="@_suggestedValue" />
</div>
@code {
string _value;
string _suggestedValue;
[Parameter]
public string Value
{
get => _value;
set
{
if (value == null)
return;
_value = value;
}
}
[Parameter]
public List<TItem> Data { get; set; }
[Parameter]
public Func<TItem, string> Property { get; set; }
[Parameter]
public TItem Selected { get; set; }
void SuggestItem(ChangeEventArgs e)
{
if (string.IsNullOrEmpty(e.Value.ToString()))
return;
Value = e.Value.ToString().ToUpper();
if (string.IsNullOrEmpty(Value))
{
_suggestedValue = string.Empty;
}
else
{
var selectedItem = Data.Select(Property).FirstOrDefault(x => x.StartsWith(Value, StringComparison.OrdinalIgnoreCase));
_suggestedValue = !string.IsNullOrWhiteSpace(selectedItem) ? selectedItem : string.Empty;
Selected = Data.FirstOrDefault(x => string.Equals(Property(x), Value, StringComparison.OrdinalIgnoreCase));
StateHasChanged();
}
// State has changed
StateHasChanged();
}
}
@typeparam TItemdirective. This does not look like a complete component code sample. I can't see_valueor other local values declaredstring _value;@Ajay2707 it is normal to name Blazor properties with the uppercase for the property they are meant to imitate. For exampleValue => value,Class => class, etc...