Сначала логика c для получения данных для дочернего компонента находилась внутри метода OnInitializedAsyn c, но я понял, что если раскрывающийся список изменился, дочерний компонент не был обновлен. В основном, в зависимости от выбранной категории, я запрашиваю разные данные из базы данных.
Здесь код:
<EditForm Model="Model" OnValidSubmit="Save">
<div class="form-group">
<label for="Category">Category</label>
<select id="Category" class="custom-select" @onchange="OnCategoryChanged">
<option value=""></option>
@foreach (var category in Model.Categories)
{
if (Model.Category != null && Model.Category.Value == category.Id)
{
<option value="@category.Id" selected="selected">@category.Name</option>
}
else
{
<option value="@category.Id">@category.Name</option>
}
}
</select>
<ValidationMessage For="@(() => Model.Category)" />
</div>
@if (Model.Category != null && Model.Category.IsExternalOrNonRuning == false)
{
<ChildComponent @bind-Data="Model.Data" Id="Id" Category="Model.Category" />
}
</EditForm>
Код для этого компонента
protected override async Task OnInitializedAsync()
{
Model = _Query(Id);
}
private void OnCategoryChanged(ChangeEventArgs e)
{
Model.Category = e.Value.ToString();
}
I решил переместить мой код из OnInitializedAsyn c в OnParametersSetAsyn c, чтобы каждый раз, когда раскрывающийся список изменялся, дочерний компонент обновлялся. Однако это создает бесконечное число l oop. Метод вызывается постоянно, хотя параметры не обновлялись.
Есть идеи, как это исправить?