Получить все экземпляры пользовательского компонента Blazor на странице Blazor - PullRequest
1 голос
/ 16 февраля 2020

Я хотел бы получить все экземпляры компонентов Blazor на странице Blazor:

Страница:

<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»?

1 Ответ

1 голос
/ 16 февраля 2020

Я считаю, что в настоящее время такой функции в Blazor не существует. Однако вы можете создать список компонентов, добавив ссылки на компоненты (атрибут директивы @ref) в объект списка следующим образом:

ChildComponent.razor

<h3>@Title</h3>

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

}

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

<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();
    }
   }

}

Обратите внимание, что список заполняется только после визуализации компонента страницы. Вы не можете получить доступ к компонентам раньше, так как они еще не созданы ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...