如何有条件地添加 Blazor 组件的模板?



我使用的是接收模板的第三方blazor组件,但我正在为该组件制作一个包装器,该包装器也将具有模板属性。

如果有人将我的包装器与模板一起使用,它应该传递模板,但如果没有,它应该使用组件的默认模板。

我试着添加一个if,但它不起作用

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

它给了我一个错误

组件"TelerikDropDownList"中无法识别的子内容。组件"TelerikDropDownList"通过以下顶级项接受子内容:"ValueTemplate"、"HeaderTemplate"、"FooterTemplate"、"ItemTemplate">

但如果我将其添加到ItemTemplate内部的if

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

它将不呈现任何内容,因为模板内容为空。

如何有条件地添加ItemTemplate或使用组件ItemTemplate的默认值?

观察:我正在使用Telerik,但这个问题应该适用于任何带有模板的组件

考虑将检查移出组件声明。下面是一个例子。假设您有两个组件:InnerComponentWrapperComponent。您的代码在WrapperComponent:中应该是这样的

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

相关内容

  • 没有找到相关文章

最新更新