Blazor 将默认参数应用于其他组件的组件

Blazor 将默认参数应用于其他组件的组件,blazor,blazor-server-side,blazorise,Blazor,Blazor Server Side,Blazorise,我正在使用Blazorise,它提供了多个基本组件,例如,具有多个参数。 我想创建一个简单的组件,该组件将使用一个或两个硬编码的参数(如Color=Colors.Primary)渲染一个,然后将其余参数传递到 这就是我希望能够写的: 文本 我希望实现这一点,而不必手动设置PrimaryButton.razor中的所有可用参数。我一直在寻找一种方法来做到这一点有一段时间,但找不到任何东西。有可能吗 我已经尝试了从按钮继承和写入,但是隐式参数被丢弃。我认为您仍然需要通过将它们添加到自定义组件来将它们

我正在使用Blazorise,它提供了多个基本组件,例如,具有多个参数。 我想创建一个简单的组件,该组件将使用一个或两个硬编码的参数(如Color=Colors.Primary)渲染一个,然后将其余参数传递到

这就是我希望能够写的:

文本 我希望实现这一点,而不必手动设置PrimaryButton.razor中的所有可用参数。我一直在寻找一种方法来做到这一点有一段时间,但找不到任何东西。有可能吗


我已经尝试了从按钮继承和写入,但是隐式参数被丢弃。

我认为您仍然需要通过将它们添加到自定义组件来将它们作为参数传递。例如,您可以使用设置了颜色和轮廓的按钮,但传递块参数

/*主按钮剃须刀*/ @儿童内容 @代码{ [参数]公共布尔块{get;set;} [参数]公共RenderFragment ChildContent{get;set;} } 然后,您可以将该新组件用作

一些文本
我认为您仍然必须通过将它们添加到自定义组件来将它们作为参数传递。例如,您可以使用设置了颜色和轮廓的按钮,但传递块参数

/*主按钮剃须刀*/ @儿童内容 @代码{ [参数]公共布尔块{get;set;} [参数]公共RenderFragment ChildContent{get;set;} } 然后,您可以将该新组件用作

一些文本
您可以为此使用属性展开

假设您的基本组件已定义

基本组件 Param1=@Param1 Param2=@Param2 @代码 { [参数]公共字符串Param1{get;set;} [参数]公共字符串Param2{get;set;} } 您希望预填充Param1,因此创建一个新的MyComponent

@代码 { [参数CaptureUnmatchedValues=true] 公共字典属性{get;set;} } 现在,您可以使用MyComponent代替BaseComponent,如果您没有为Param1提供值,那么在本例中,它将按字面意义预定义该值

所以这个标记:

生成此输出:

基本组件 参数1=基准 参数2=组件

基本组件 Param1=我的 参数2=组件

基本组件 参数1=预定义的 参数2=组件


请参阅BlazorRepl上的一个实时示例:

您可以为此使用属性Splating

假设您的基本组件已定义

基本组件 Param1=@Param1 Param2=@Param2 @代码 { [参数]公共字符串Param1{get;set;} [参数]公共字符串Param2{get;set;} } 您希望预填充Param1,因此创建一个新的MyComponent

@代码 { [参数CaptureUnmatchedValues=true] 公共字典属性{get;set;} } 现在,您可以使用MyComponent代替BaseComponent,如果您没有为Param1提供值,那么在本例中,它将按字面意义预定义该值

所以这个标记:

生成此输出:

基本组件 参数1=基准 参数2=组件

基本组件 Param1=我的 参数2=组件

基本组件 参数1=预定义的 参数2=组件


查看BlazorRepl上的一个实时示例:

我真的希望避免这样做。如果Blazor不允许这样做,我真的会感到惊讶和失望,但似乎是这样。我真的希望避免这样做。如果Blazor不允许这样做,我真的会感到惊讶和失望,但似乎是这样。谢谢你的帮助和解释。我尝试了这个方法,但它不起作用,我想这是因为我想用一些预定义参数渲染的组件是一个也使用属性散点的组件。我想用Blazorise的按钮组件来实现这一点。感谢您的帮助和解释。我尝试了这个方法,但它不起作用,我想这是因为我想用一些预定义参数渲染的组件是一个也使用属性散点的组件。我想用Blazorise的按钮组件来实现这一点。