Angular 2+ - 如何在组件树中提供多个值?

时间:2018-01-20 13:39:20

标签: angular dependency-injection provider

前段时间我遇到了挑战,我仍然无法找到一个好的解决方案。

我有一个组件树,我希望每个组件都为每个直接子组件提供具有相同标记的值。只有他们的直接孩子才需要拥有这个价值,因为它与树下的其他组成部分无关。

我遇到的第一个问题是,当我在父组件和子组件中都提供带有标记的值时,子组件会覆盖它,然后才能使用来自父组件的值。如果我能以某种方式获得父组件提供的值,则覆盖不会有问题。

我的第一个想法是使用多提供程序,因此不会丢失提供的值。但是,它没有像我想象的那样在组件之间工作。我做了一个小图片来说明我使用多提供商所经历的事情。

The result of using multi providers

对我来说,这个功能毫无意义。即使我使用“multi:true”,上层组件的每个提供的值都会丢失。 在查看日志之前, this is how I imagined it would work.

我像这样注入了数组:

constructor(@Inject('MultiToken') private multiProvidedValues: string[])
{...}

这样我就会知道数组中的最后一个元素是由当前组件提供的,而前一个元素是由父组件提供的。 如果只有一个元素,则当前组件是根。

是否可以按照我的2.图片显示的方式使用多提供商? 或者我可以以某种方式获得来自父级的值,即使我的组件提供相同的令牌?

最后,我设法通过仅在根目录中提供地图来解决问题,但我真的想通过依赖注入来解决这个问题。

提前谢谢!

0 个答案:

没有答案