以编程方式显示Blazor CascadingValue

时间:2020-05-11 10:37:35

标签: c# asp.net razor blazor webassembly

我创建了自己的基本组件,我希望所有基本组件继承自该基本组件

public class BaseComponent : ComponentBase
{
    // ...
}

页面组件:

@page "/apage"
@inherits BaseComponent
<CascadingValue Value="this">
    <div>
        <MyOtherComponent />
    </div>
</CascadingValue>

我想在MyOtherComponent中做

[CascadingParameter]
public BaseComponent BaseComponent { get; set; }

到这里所有作品。但是我想改进,我希望每个页面组件都应该制作CascadingValue Value="this",因为从BaseComponent继承的每个页面都应该为需要该引用的所有子组件提供BaseComponent引用。

因此页面组件应如下所示:

@page "/apage"
@inherits BaseComponent
<div>
    <MyOtherComponent />
</div>

CascadingValue Value =“ this”的逻辑应移至BaseComponent。
我该怎么办?

1 个答案:

答案 0 :(得分:2)

我找到了另一个解决方案:

我创建了带有接口的服务类。

public interface IStateService
{
    bool Pening { get; set; }
}
public class StateService : IStateService
{
    public bool Pening { get; set; }
}

并将其添加到program.cs

builder.Services.AddScoped<IStateService, StateService>();

比我将其注入BaseComponent.cs

[Inject]
public IStateService StateService { get; set; }

如果需要,所有其他组件(例如MyOtherComponent)也可以注入它。