将Blazor组件继承为MudBlazor组件



我需要创建一个新的表组件,以便在我的应用程序页面上重用它,我想使用MudBrazor中的MudTable(通过Typescript和React,我可以做到这一点(。

我正试图将MudTable从MudBlazor继承到我的Table组件类:

台式剃须刀

@typeparam T
@inherits MudTable<T>
<div class="table-component">
<MudTable
T="@T"
>
</MudTable>
</div>

表.剃刀.cs

using Microsoft.AspNetCore.Components;
using MudBlazor;
namespace ticketsapp.Components.Table
{
public partial class Table<T>: MudTable<T>
{
}
}

我添加了属性参数来填充MudTable缺少的属性

表.剃刀.cs

using Microsoft.AspNetCore.Components;
using MudBlazor;
namespace ticketsapp.Components.Table
{
public partial class Table<T>: MudTable<T>
{
#region "PARAMETERS"
[Parameter(CaptureUnmatchedValues = true)]
public Dictionary<string, object> Attributes { get; set; }
#endregion
#region "FUNCTIONS"
#endregion
}
}

表.razor

@typeparam T
@inherits MudTable<T>
<div class="table-component">
<MudTable
T="@T"
@attributes="@Attributes"
>
</MudTable>
</div>

但当我编译时,我看到导航控制台上有一条消息:

临界值:Microsoft.AspNetCore.Components.WebAssembly.Prendering.WebAssemblyRenderer[100]呈现组件时出现未处理的异常:在组件类型上找到多个属性'ticketsapp.Components.Table.Table1[[ticketsapp.Models.Ticket, ticketsapp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' with 'ParameterAttribute.CaptureUnmatchedValues'. Only a single property per type can use 'ParameterAttribute.CaptureUnmatchedValues'. Properties: Attributes UserAttributes System.InvalidOperationException: Multiple properties were found on component type 'ticketsapp.Components.Table.Table1[[ticketsappp.Models.Ticket,ticketsapp,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null]]'带有"ParameterAttribute.CaptureUnmatchedValues"。只有一个每个类型的属性都可以使用"ParameterAttribute.CaptureUnmatchedValues"。属性:处的属性UserAttributesMicrosoft.AspNetCore.Components.Reflection.ComponentProperties.ThrowForMultipleCaptureUnmatchedValuesParameters(类型targetType(Microsoft.AspNetCore.Components.Reflection.ComponentProperties.WritersForType.ctor(类型targetType(Microsoft.AspNetCore.Components.Reflection.ComponentProperties.SetProperties(ParameterView&参数,对象目标(Microsoft.AspNetCore.Components.ParameterView.SetParameterProperties(对象目标(Microsoft.AspNetCore.Components.ComponentBase.SetParametersAsync(ParameterView参数(Microsoft.AspNetCore.Components.Rendering。ComponentState.SupplyCombinedParameters(ParameterView直接和级联参数(

我是blazor的新手,我不知道是否存在其他正确的方法。

MudTable已经有一个名为UserAttributes的属性,具有[Parameter(CaptureUnmatchedValues = true)]属性。您的组件继承自MudTable,因此不能使用此属性声明第二个属性。您可以简单地使用基类中的属性。

@typeparam T
@inherits MudTable<T>
<div class="table-component">
<MudTable
T="@T"
@attributes="@base.UserAttributes"
>
</MudTable>
</div>

相关内容

  • 没有找到相关文章

最新更新