Blazor 渲染片段子内容只允许某些组件?
Blazor Render Fragment Child Content to allow only certain components?
是否可以限制组件的RenderFragment Child Content 只允许某些组件?
例如
<MyParentComponent>
<Children>
<AcceptedChild/>
<InvalidChild/> <-- throw err since it shouldn't be accepted
</Children>
</MyParentComponent>
编辑:
<DataGrid>
<DataGridColumns>
<DataGridColumn/>
<DataGridColumn/>
<NotADataGridColumn/> <--- throw error
</DataGridColumns>
</DataGrid>
如果您的组件包含两个或更多 RenderFragment
参数,您可以在使用您的组件时限制直接子项的有效选择。
例如如果您的组件 MyComponent
具有以下参数:
[Parameter]
public RenderFragment FirstChild { get; set; }
[Parameter]
public RenderFragment SecondChild { get; set; }
然后您尝试按如下方式使用它:
<MyComponent>
<FirstChild />
<SecondChild />
<ThirdChild />
</MyComponent>
<ThirdChild />
会抛出错误:
RZ9996 Unrecognized child content inside component 'MyComponent'. The component 'MyComponent' accepts child content through the following top-level items: 'MyFirstChildComponent', 'MySecondChildComponent'.
您的示例中的等价物是 Children
例如包含参数 RenderFragment AcceptedChild
和 RenderFragment AcceptedChild2
,但没有 RenderFragment InvalidChild
.
Is it possible to restrict the RenderFragment Child Content of a component to only allow certain components?
没有
A RenderFragment
是委托人。在您的示例中,分配给 DataGridColumns
的 RenderFragment
属于父级 page/component,而不是 DataGrid
,并且在渲染器的父级上下文中是 运行。 DataGrid
只“知道”它是一个符合 RenderFragment
模式的委托。它无法访问内部代码,因此无法知道它包含什么。
是否可以限制组件的RenderFragment Child Content 只允许某些组件?
例如
<MyParentComponent>
<Children>
<AcceptedChild/>
<InvalidChild/> <-- throw err since it shouldn't be accepted
</Children>
</MyParentComponent>
编辑:
<DataGrid>
<DataGridColumns>
<DataGridColumn/>
<DataGridColumn/>
<NotADataGridColumn/> <--- throw error
</DataGridColumns>
</DataGrid>
如果您的组件包含两个或更多 RenderFragment
参数,您可以在使用您的组件时限制直接子项的有效选择。
例如如果您的组件 MyComponent
具有以下参数:
[Parameter]
public RenderFragment FirstChild { get; set; }
[Parameter]
public RenderFragment SecondChild { get; set; }
然后您尝试按如下方式使用它:
<MyComponent>
<FirstChild />
<SecondChild />
<ThirdChild />
</MyComponent>
<ThirdChild />
会抛出错误:
RZ9996 Unrecognized child content inside component 'MyComponent'. The component 'MyComponent' accepts child content through the following top-level items: 'MyFirstChildComponent', 'MySecondChildComponent'.
您的示例中的等价物是 Children
例如包含参数 RenderFragment AcceptedChild
和 RenderFragment AcceptedChild2
,但没有 RenderFragment InvalidChild
.
Is it possible to restrict the RenderFragment Child Content of a component to only allow certain components?
没有
A RenderFragment
是委托人。在您的示例中,分配给 DataGridColumns
的 RenderFragment
属于父级 page/component,而不是 DataGrid
,并且在渲染器的父级上下文中是 运行。 DataGrid
只“知道”它是一个符合 RenderFragment
模式的委托。它无法访问内部代码,因此无法知道它包含什么。