Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 以编程方式创建角度分层喷油器_Angular_Dependency Injection_Hierarchical - Fatal编程技术网

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>