Передача нескольких дочерних компонентов в качестве параметра - PullRequest
1 голос
/ 16 июня 2020

Таким образом, использование компонента будет выглядеть так:

<ParentListComponent Header="Test">
   <ChildListItemComponent Name="1"/>
   <ChildListItemComponent Name="2"/>
   <ChildListItemComponent Name="3"/>
   <ChildListItemComponent Name="4"/>
</ParentListComponent>

А ParentListComponent будет выглядеть примерно так:

@foreach(var childComponent in listComponents){
    @childComponent
}

@code{

   [Parameter]
   Public List<ChildListItemComponent> listComponents { get; set; }
}

Я знаю, что могу легко визуализировать его, передав это как ChildContent, как показано ниже, но мне бы очень хотелось сохранить список, чтобы я мог легко получить доступ к каждому элементу из родительского элемента.

[Parameter]
public RenderFragment ChildContent { get; set; }

Мне кажется, что здесь просто отсутствует синтаксис, но к сожалению, я не могу найти для этого информацию. Если вы можете помочь, я буду признателен

1 Ответ

7 голосов
/ 16 июня 2020

Вы бы создали ParentComponent и ChildComponent. Разметка для ParentComponent будет иметь следующий вид

<CascadingValue Value=this>
@ChildContent
</CascadingValue>

@code
{
  [Parameter]
  public RenderFragment ChildContent { get; set; }
}

Теперь ваши дети будут иметь доступ к родительскому объекту, например,

[CascadingParameter]
public ParentComponent ParentComponent { get; set; }

В методе OnInitialized вы можете вызовите ParentComponent.RegisterChild(this);, а в IDisposable.Dispose вы можете вызвать ParentComponent.UnregisterChild(this);

Это два метода, которые вы бы добавили в свой родительский класс, чтобы сохранить список ChildComponent.

Там полный обход через Университет Блазора здесь .

...