我正在使用接收模板的第三方blazor组件,但是我正在为该组件制作一个包装,该包装还将具有template属性。
如果有人将我的包装器与模板一起使用,则它应该通过模板,但如果没有,则应使用组件的默认模板。
我尝试添加一个if,但是它不起作用
const recCloud = clouds => {
return clouds.length < 4 ? 1 : 1 + recCloud(clouds.slice(clouds[2] == 0 ? 2 : 1));
};
这给我一个错误
组件'TelerikDropDownList'中无法识别的子内容。组件“ TelerikDropDownList”通过以下顶级项接受子内容:“ ValueTemplate”,“ HeaderTemplate”,“ FooterTemplate”,“ ItemTemplate”
但是如果我在@if (ItemTemplate != null)
<ItemTemplate Context="Data">
@ItemTemplate(Data)
</ItemTemplate>
}
内添加If,
ItemTemplate
它不会呈现任何内容,因为模板内容为空。
如何有条件地添加<ItemTemplate Context="Data">
@if (ItemTemplate != null)
{
@ItemTemplate(Data)
}
</ItemTemplate>
或使用组件ItemTemplate
的默认值?
观察:我正在使用Telerik,但是这个问题对于任何带有模板的组件应该都是通用的
答案 0 :(得分:5)
考虑将检查移出组件声明。
这是一个例子。假设您有两个部分:InnerComponent
和WrapperComponent
。您的代码在WrapperComponent中应如下所示:
@if(CustomTemplate == null)
{
<InnerComponent />
}
else
{
<InnerComponent>
<ItemTemplate>@ItemTemplate</ItemTemplate>
</InnerComponent>
}