我创建了一个自己的基本组件,我希望我的所有页面组件都来自这个基本组件
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(也可以注入它。