Quantcast
Channel: Active questions tagged blazor - Stack Overflow
Viewing all articles
Browse latest Browse all 4839

Child component not updating property

$
0
0

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;        }    }

Viewing all articles
Browse latest Browse all 4839

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>