Как условно добавить шаблон компонента Blazor? - PullRequest
1 голос
/ 13 марта 2020

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

Если кто-то использует мою оболочку с шаблоном, он должен передать шаблон, но если нет, он должен использовать шаблон компонента по умолчанию.

Я пытался добавить if, но он не работает

@if (ItemTemplate != null)
    <ItemTemplate Context="Data">
            @ItemTemplate(Data)        
    </ItemTemplate>
}

Это выдает ошибку

Нераспознанный дочерний контент внутри компонента TelerikDropDownList. Компонент 'TelerikDropDownList' принимает дочерний контент через следующие элементы верхнего уровня: 'ValueTemplate', 'HeaderTemplate', 'FooterTemplate', 'ItemTemplate'

Но если я добавлю его, If внутри ItemTemplate

<ItemTemplate Context="Data">
    @if (ItemTemplate != null)
    {
        @ItemTemplate(Data)
    }
</ItemTemplate>

Ничего не будет отображаться, потому что содержимое шаблона пусто.

Как можно условно добавить ItemTemplate или использовать значение по умолчанию для компонентов ItemTemplate?

Замечание : я использую Telerik, но этот вопрос должен быть обобщенным c для любого компонента с шаблонами

1 Ответ

5 голосов
/ 14 марта 2020

Рассмотрите возможность удаления чека из декларации компонента. Вот пример. Предположим, у вас есть два компонента: InnerComponent и WrapperComponent. Ваш код должен выглядеть следующим образом в WrapperComponent:

@if(CustomTemplate == null)
{
   <InnerComponent />
}
else
{
    <InnerComponent>
        <ItemTemplate>@ItemTemplate</ItemTemplate>
    </InnerComponent>
}
...