Angular 以编程方式创建角度分层喷油器
我目前使用一个带有一组提供者的Angular 以编程方式创建角度分层喷油器,angular,dependency-injection,hierarchical,Angular,Dependency Injection,Hierarchical,我目前使用一个带有一组提供者的@指令,为没有它的任何组件创建一组独立的可注入服务/值 @Directive({ selector: '[my-isolated-directive]', providers: [MyHierarchicalService] }) export class MyIsolatedDirective {} 这可以很好地工作,但需要我在视图中引入一组新的代码,在视图中,除了打开一个新的层次结构注入器和服务之外,它可以说没有任何事情可做 我的问题是:是否有可能
@指令
,为没有它的任何组件创建一组独立的可注入服务/值
@Directive({
selector: '[my-isolated-directive]',
providers: [MyHierarchicalService]
})
export class MyIsolatedDirective {}
这可以很好地工作,但需要我在视图中引入一组新的代码,在视图中,除了打开一个新的层次结构注入器和服务之外,它可以说没有任何事情可做
我的问题是:是否有可能在没有指令帮助的情况下通过编程实现这一点?我知道可以使用injector.create([MyHierarchicalService],parent)
手动创建注入器,但我可以允许此注入器本机用于子组件吗
简单地将提供者:[MyHierarchicalService]
移动到
组件中是不可行的,因为该隔离中的多个组件将需要相同的服务。可以将其视为分层喷油器中的“打开空间”,在分层喷油器下方,所有组件共享相同的服务
使用我当前的解决方案简化stackblitz示例:
感兴趣时使用我的隔离空间的实际指令:
使用指令解决方案的实际代码:
<ng-container my-isolated-directive>
<component-that-interacts-with-isolation></..>
<component-that-requires-isolation></...>
</ng-container>