У меня есть страница Blazor, которая отображает список компонентов на основе списка, к которому я динамически добавляю / удаляю элементы:
<TelerikButton OnClick="() => State.AddSymbols(SymbolToAdd)">Add</TelerikButton>
@foreach (var symbolToDisplay in State.SymbolsToDisplay)
{
<StockGraph SymbolToDisplay="@symbolToDisplay" OnRemoved="() => State.RemoveSymbol(symbolToDisplay)"/>
}
Это код состояния:
public void AddSymbols(string symbol)
{
SymbolsToDisplay.Add(symbol);
StateHasChanged();
}
public void RemoveSymbol(string symbol)
{
SymbolsToDisplay.Remove(symbol);
StateHasChanged();
}
И код компонента:
<div class="stock-graph">
<p>
@companyData?.companyName
</p>
<div>
<TelerikButton class="delete-item" onclick="@OnRemoved">X</TelerikButton>
</div>
<TelerikChart ref="@chart">
<TelerikChartSeriesItems>
<TelerikChartSeries Type="ChartSeriesType.Line" Data="@data.StockValues"
Field="@nameof(StockValueData.StockValue)"
CategoryField="@nameof(StockValueData.Date)">
</TelerikChartSeries>
</TelerikChartSeriesItems>
<TelerikChartValueAxes>
<TelerikChartValueAxis Color="red"></TelerikChartValueAxis>
</TelerikChartValueAxes>
</TelerikChart>
Это должно быть довольно просто.Но по какой-то причине при удалении компонента всегда отображается последний отображаемый компонент, даже если в списке удалено требуемое значение и содержатся все правильные значения.
У меня есть пример выполнения этого кода на моемgithub: GitHubRepo
Просто добавьте случайные символы акций, такие как GOOG, AAPL, ACC