以编程方式的 Blazor 级联值



我创建了一个自己的基本组件,我希望我的所有页面组件都来自这个基本组件

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中。
我该怎么做?

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

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

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

并将其添加到程序中.cs

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

比我把它注入到BaseComponent中.cs

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

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

相关内容

  • 没有找到相关文章

最新更新