2016-06-07 78 views
1

不太確定如何解釋這一點,但我會給我最好的拍攝。從注射角度2訪問組件

我有一個在主應用程序中引導的注射提供程序。它試圖訪問組件的提供者。

我可以使用ViewChild從其他組件訪問該組件,但我不能從注射提供程序。我認爲它是因爲提供程序在組件之前被初始化的,所以它不適用於ViewChild查詢。

有沒有一種方法來使用可注入函數內部的Viewchild引用?就像我在調用函數時初始化孩子一樣。

對不起,如果這是混亂,不知道如何解釋。

謝謝, 拉杜

回答

0

@ViewChild()查詢視圖。注射劑(服務)沒有視圖,因此@ViewChild()找不到。另外Angular首先不會在服務中處理@ViewChild()註釋,只能在指令和組件中使用。

你可以做的是使用@ViewChild()進行查詢並將結果傳遞給共享服務。

+0

現在我的解決方法是在服務內部有一個公共變量,我只是將它設置在afterViewInit函數中,之後它可用。我只是強硬它將是一個更乾淨的方式。感謝您的解釋 – keepwalking

+0

我認爲有一個'@ViewChild()'('ElementRef')或者它在服務中返回的任何東西都是糟糕的設計。我寧願使用服務與包含'@ViewChild()'的組件進行通信,以使組件對引用執行命令,而不是傳遞引用。 –

+0

關於如何使服務與組件通信的任何跡象? – keepwalking