【问题标题】:Add/load components dynamically动态添加/加载组件
【发布时间】:2018-05-05 10:58:26
【问题描述】:

Blazor 的好人,我需要你的帮助。

今天在向页面添加组件时,您通常会这样做:

@page "/somepage"

<MyComponent></MyComponent>

我想做的是动态添加组件,如下所示:

@page "/somepage"

@dynamicComponent

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

任何想法如何做到这一点,动态添加或加载组件?

【问题讨论】:

标签: c# asp.net-core blazor


【解决方案1】:

目前没有用于此的高级 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();
    };
}

【讨论】:

  • 谢谢,正是我需要的:RenderFragment dynamicComponent() => builder => { builder.OpenComponent(0); builder.CloseComponent(); };
  • 嗨,这不再起作用了。这正是我想要做的,但它不能在 3.1 的 Web 程序集 Blazor 应用程序中编译。
  • @sanepete 我确认它适用于 Blazor WASM .NET Standard 2.1 应用程序
【解决方案2】:

更新,因为此线程在 Google 上的排名很高...

看看 ASP.NET Core Blazor 和 MVC 6.0 中新的 DynamicComponent 控件。 (将在 .NET 6.0 中发布,目前提供预览版):

https://www.daveabrock.com/2021/04/08/blazor-dynamic-component/

【讨论】:

    猜你喜欢
    • 2021-07-04
    • 2019-10-19
    • 2013-06-22
    • 1970-01-01
    • 2014-10-02
    • 2012-01-03
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多