我正在尝试创建组件的层次结构。有一个全局的“CONTEXT”对象(在 NgModule 级别提供),但我希望一个组件能够为他们的孩子覆盖这个对象。“CONTEXT”对象目前是通过注入获得的,像这样:
NgModule ---> Provides default "CONTEXT" for injection
<comp1>
<comp2>
<comp3> ---> Overrides CONTEXT.someProp
<comp4>
<comp5>
<comp5>
<comp4>
<comp3>
<comp2>
<comp1>
没有组件知道其他组件的存在(它们是动态创建的),但 comp3 应该能够控制/更改哪些上下文“看到”其指定的子级(在本例中为 comp4 和 comp5)。
我猜注入在这里不是最好的模式(我该怎么做?comp3 应该扩展 CONTEXT 吗?),至少因为它是伪静态的(Angular 可以在创建后检测并传播设置的更改吗?)。也许 Observable 可以在这里提供帮助。
我已经看到了这个答案,但我认为情况并非如此。
实现这一目标的最佳方法是什么?我想避免使用显式的 @Input 属性,因为中间组件应该尽可能不可知。这里有一个共同的模式可以遵循吗?