So in the razor.cs there is a method that imports an xml and displays it in the child components. How it is rendered is shown in the .razor, but for some reason only the Models-property in the child components in the for loop get updated (count 33) and the main VitalizationSetting component's Models only has count 29. Even though when I debug they both show count 33.
.razor.cs (parent):
private List<ModelDto> Models { get; set; }public VitalizationSetting VitalizationSetting { get; set; } = null;public List<VitalizationSetting> VitalizationTabRefs { get; set; } = [];private VitalizationSetting VitalizationTabRef{ set { VitalizationTabRefs.Add(value); }}private async Task ImportVitalizationSettings(){ if (string.IsNullOrWhiteSpace(InputXml)) return; try { var IFCVitalizationSettings = IFC.Vitalization.VitalizationSettings.FromXml(InputXml); (VitalizationSetting, VitalizationTabRefs) = await Converter.ConvertToNativeVitalizationSettings(IFCVitalizationSettings, Models); VitalizationTabCount = VitalizationTabRefs.Count; // Sync available Document Intelligence models through all VitalizationSetting-objects Models.Add(VitalizationSetting.SelectedModel); foreach (var tab in VitalizationTabRefs) { Models.Add(tab.SelectedModel); } VitalizationSetting.Models = Models; // Here Count is 33 foreach (var tab in VitalizationTabRefs) { tab.Models = Models; // Here Count is also 33 } InputXml = ""; } catch (Exception e) { Console.WriteLine($"Error during import: {e.Message}"); }}.razor (parent):
<VitalizationSetting Models="Models" @ref="VitalizationSetting" VitalizationSettingData="@VitalizationSetting" /> // in this component it displays only 29 items@if (VitalizationTabCount > 0){ @for (int i = 0; i < VitalizationTabCount; i++) { // each of these components show 33 items<VitalizationSetting IsTab="true" Models="Models" @ref="VitalizationTabRef" OnDelete="RemoveVitalizationTab" VitalizationSettingData="@VitalizationTabRefs[i]" /> }}Can anybody see what I'm doing different or incorrect between these 2 components?
Also in the child components the OnParametersSetAsync() is triggered for each component shown in the .razor:
protected override async Task OnParametersSetAsync() { try { if (VitalizationSettingData == null || VitalizationSettingData.SelectedModel == null) return; TabName = VitalizationSettingData.TabName; TabIndex = VitalizationSettingData.TabIndex; Models = VitalizationSettingData.Models; // Here it's also always count 33, but in the UI it's not :/ SelectedModel = VitalizationSettingData.SelectedModel; SelectedDocumentType = VitalizationSettingData.SelectedDocumentType ?? null; UseComposedModel = VitalizationSettingData.UseComposedModel; ClassificationMinConfidence = VitalizationSettingData.ClassificationMinConfidence; CalibrateColumns(); } catch (Exception e) { throw; } }