首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检索Blazor页上的自定义Blazor组件的所有实例

检索Blazor页上的自定义Blazor组件的所有实例
EN

Stack Overflow用户
提问于 2020-02-16 19:59:57
回答 1查看 441关注 0票数 2

我想在Blazor页面上获得Blazor组件的所有实例:

页面:

代码语言:javascript
复制
<div class="mb-4 pt-3">
    <SearchFilter Refinement="@refinementAuthor" FilterTitle="Auteur"></SearchFilter>
</div>
<div class="mb-4 pt-3">
    <SearchFilter Refinement="@refinementSubject" FilterTitle="Onderwerp"></SearchFilter>
</div>
<div class="mb-4 pt-3">
    <SearchFilter Refinement="@refinementLanguage" FilterTitle="Taal"></SearchFilter>
</div>

如何获取这三个"SearchFilter“的列表?

EN

回答 1

Stack Overflow用户

发布于 2020-02-16 21:08:27

我相信目前Blazor中还不存在这样的特性。但是,您可以通过将组件引用(@ref指令属性)添加到列表对象来创建组件列表,如下所示:

ChildComponent.razor

代码语言:javascript
复制
<h3>@Title</h3>

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

}

用法

代码语言:javascript
复制
<ChildComponent @ref="ChildComponent1" Title="ChildComponent 1"/>
<ChildComponent @ref="ChildComponent2" Title="ChildComponent 2" />
<ChildComponent @ref="ChildComponent3" Title="ChildComponent 3" />

@if (components != null)
{
   @foreach (var component in components)
  {
    <p>@component.Title</p>
  }

}

@code{
  ChildComponent ChildComponent1;
  ChildComponent ChildComponent2;
  ChildComponent ChildComponent3;

  List<ChildComponent> components;

  protected override void OnAfterRender(bool firstRender)
  {
    if (firstRender)
    {
        components = new List<ChildComponent>();
        components.Add(ChildComponent1);
        components.Add(ChildComponent2);
        components.Add(ChildComponent3);

        StateHasChanged();
    }
   }

}

请注意,只有在呈现页面组件之后,才会填充该列表。您之前不能访问这些组件,因为它们尚未创建...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60248231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档