Blazor (Razor Components) Обновить дочерний компонент из родительского компонента - PullRequest
0 голосов
/ 04 июля 2019

У меня есть простой дочерний компонент Blazor (MyModal), например:

<div class="modal">
    <h3>@Title</h3>
    @BodyTemplate
</div>

@code
{
    [Parameter] string Title { get; set; }
    [Parameter] RenderFragment BodyTemplate { get; set; }
}

В моем родительском компоненте я называю это так:

<MyModal Title="Super Cool Modal">
        <BodyTemplate>
            @MyObject.Name
        </BodyTemplate>
</MyModal>

public MyObject MyObject { get; set; } = new MyObject();

Позже, после первоначальной визуализации страницы, я обновляю MyObject, но сам дочерний компонент, ссылающийся на @MyObject.Name, никогда не обновляется.

Кажется, мне нужно принудительно обновить дочерний объект после того, как я обновил объект (StateHasChanged), но не уверен, как это сделать с этим примером.

1 Ответ

0 голосов
/ 05 июля 2019

Примечание: ваш шаблонный компонент был сделан неправильно, а также то, как вы его используете.Пожалуйста, запустите предоставленный мною код, убедитесь, что он работает, и просмотрите внесенные мной изменения.Если у вас есть вопросы, не стесняйтесь спрашивать.

Ваш код должен выглядеть примерно так:

MyModal

<div class="modal">
    <h3>@Title</h3>
    @BodyTemplate (MyObject)
</div>

@code
{
    [Parameter] string Title { get; set; }
    [Parameter] RenderFragment BodyTemplate { get; set; }
    [Parameter] MyObject MyObject{ get; set; }
}

Использование

<MyModal Title="Super Cool Modal" MyObject="@MyObject">
        <BodyTemplate>
            @context.Name
        </BodyTemplate>
</MyModal>

public MyObject MyObject { get; set; } = new MyObject(); 

Надеюсь, это поможет ...

...