2016-06-07 83 views
1

不太确定如何解释这一点,但我会给我最好的拍摄。从注射角度2访问组件

我有一个在主应用程序中引导的注射提供程序。它试图访问组件的提供者。

我可以使用ViewChild从其他组件访问该组件,但我不能从注射提供程序。我认为它是因为提供程序在组件之前被初始化的,所以它不适用于ViewChild查询。

有没有一种方法来使用可注入函数内部的Viewchild引用?就像我在调用函数时初始化孩子一样。

对不起,如果这是混乱,不知道如何解释。

谢谢, 拉杜

回答

0

@ViewChild()查询视图。注射剂(服务)没有视图,因此@ViewChild()找不到。另外Angular首先不会在服务中处理@ViewChild()注释,只能在指令和组件中使用。

你可以做的是使用@ViewChild()进行查询并将结果传递给共享服务。

+0

现在我的解决方法是在服务内部有一个公共变量,我只是将它设置在afterViewInit函数中,之后它可用。我只是强硬它将是一个更干净的方式。感谢您的解释 – keepwalking

+0

我认为有一个'@ViewChild()'('ElementRef')或者它在服务中返回的任何东西都是糟糕的设计。我宁愿使用服务与包含'@ViewChild()'的组件进行通信,以使组件对引用执行命令,而不是传递引用。 –

+0

关于如何使服务与组件通信的任何迹象? – keepwalking