前段时间我遇到了挑战,我仍然无法找到一个好的解决方案。
我有一个组件树,我希望每个组件都为每个直接子组件提供具有相同标记的值。只有他们的直接孩子才需要拥有这个价值,因为它与树下的其他组成部分无关。
我遇到的第一个问题是,当我在父组件和子组件中都提供带有标记的值时,子组件会覆盖它,然后才能使用来自父组件的值。如果我能以某种方式获得父组件提供的值,则覆盖不会有问题。
我的第一个想法是使用多提供程序,因此不会丢失提供的值。但是,它没有像我想象的那样在组件之间工作。我做了一个小图片来说明我使用多提供商所经历的事情。
The result of using multi providers
对我来说,这个功能毫无意义。即使我使用“multi:true”,上层组件的每个提供的值都会丢失。 在查看日志之前, this is how I imagined it would work.
我像这样注入了数组:
constructor(@Inject('MultiToken') private multiProvidedValues: string[])
{...}
这样我就会知道数组中的最后一个元素是由当前组件提供的,而前一个元素是由父组件提供的。 如果只有一个元素,则当前组件是根。
是否可以按照我的2.图片显示的方式使用多提供商? 或者我可以以某种方式获得来自父级的值,即使我的组件提供相同的令牌?
最后,我设法通过仅在根目录中提供地图来解决问题,但我真的想通过依赖注入来解决这个问题。
提前谢谢!