Как условно добавить шаблон компонента Blazor?
Я использую сторонний компонент blazor, который получает шаблон, но я делаю оболочку для этого компонента, которая также будет иметь свойство шаблона.
Если кто-то использует мою оболочку с шаблоном, он должен передать шаблон, но если нет, он должен использовать шаблон компонента по умолчанию.
Я пробовал добавить if, но это не работает
@if (ItemTemplate != null)
<ItemTemplate Context="Data">
@ItemTemplate(Data)
</ItemTemplate>
}
Это дает мне ошибку
Нераспознанный дочерний контент внутри компонента TelerikDropDownList. Компонент TelerikDropDownList принимает дочерний контент через следующие элементы верхнего уровня: ValueTemplate, HeaderTemplate, FooterTemplate, ItemTemplate.
Но если я добавлю его внутри ItemTemplate
<ItemTemplate Context="Data">
@if (ItemTemplate != null)
{
@ItemTemplate(Data)
}
</ItemTemplate>
Он ничего не отобразит, потому что содержимое шаблона пустое.
Как я могу добавить ItemTemplate
условно или используйте значение компонентов по умолчанию ItemTemplate
?
Наблюдение: я использую Telerik, но этот вопрос должен быть общим для любого компонента с шаблонами.
1 ответ
Рассмотрите возможность переноса проверки из объявления компонента. Вот пример. Предположим, у вас есть два компонента:InnerComponent
а также WrapperComponent
. Ваш код в WrapperComponent должен выглядеть так:
@if(CustomTemplate == null)
{
<InnerComponent />
}
else
{
<InnerComponent>
<ItemTemplate>@ItemTemplate</ItemTemplate>
</InnerComponent>
}