Динамически добавлять / загружать компоненты

asp.net-core blazor c#

Вопрос

Хорошие люди Блэйсор, мне нужна твоя помощь.

Сегодня, когда вы добавляете компоненты на страницу, вы обычно делаете что-то вроде этого:

@page "/somepage"

<MyComponent></MyComponent>

Я хочу добавить динамические компоненты, что-то вроде этого:

@page "/somepage"

@dynamicComponent

@functions{
 BlazorComponent dynamicComponent = Activator.CreateInstance<Components.MyComponent>();
}

Любые идеи, как это сделать, добавление или загрузка компонентов динамически?

Принятый ответ

На данный момент API высокого уровня для этого не существует. Вы можете использовать API низкого уровня, как описано здесь: https://github.com/aspnet/Blazor/issues/723

В вашем случае это будет означать:

@page "/somepage"

@dynamicComponent()

@functions{
  RenderFragment dynamicComponent() => builder =>
    {
        builder.OpenComponent(0, typeof(SurveyPrompt));
        builder.AddAttribute(1, "Title", "Some title");
        builder.CloseComponent();
    };
}



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему