Add/load 个动态组件
Add/load components dynamically
好的 Blazor 人,我需要你的帮助。
如今,在向页面添加组件时,您通常会这样做:
@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();
};
}
更新,因为此线程具有高 Google 排名...
看看 ASP.NET Core Blazor 和 MVC 6.0 中的新 DynamicComponent 控件。 (将在 .NET 6.0 中发布,目前提供预览版):
https://www.daveabrock.com/2021/04/08/blazor-dynamic-component/
好的 Blazor 人,我需要你的帮助。
如今,在向页面添加组件时,您通常会这样做:
@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();
};
}
更新,因为此线程具有高 Google 排名...
看看 ASP.NET Core Blazor 和 MVC 6.0 中的新 DynamicComponent 控件。 (将在 .NET 6.0 中发布,目前提供预览版):
https://www.daveabrock.com/2021/04/08/blazor-dynamic-component/