2016-04-25 44 views
0

我一直在使用Angular2框架中的一些示例代碼。例如,英雄樣本。有一件事我目前不瞭解。說什麼說我的構造函數需要是Router, Service或反之亦然。RouteConfig和類,爲什麼需要構造函數需要一個服務和路由器?

我現在明白爲什麼需要他們爲@RouteConfig工作,併爲呼叫服務,但什麼是明確的因素,他說:「因爲X的,你需要的構造是路由器,服務」

這個類實現了OnInit嗎?它是否在應用程序組件的RouteConfig中引用了該類?是什麼使訂單成爲這樣,我可以反過來扭轉它嗎?

最後一個問題,我確定是一個沒有去,如果我有1個compoennt定義爲Router,Service,而另一個是Service, Router

如果有人可以給我一些見解,爲什麼這需要建立這樣以及定義的來源,它會更好地幫助我更多地理解Angular 2的概念。

如果你可以指向我的重要文檔文件,這將是驚人的,所以我可以閱讀更多。

回答

1

如果你有一個像

constructor(private router:Router, private service:Service) {} 

然後構造你告訴Angulars DI一個Router實例應作爲第一個構造函數參數傳遞和Service實例作爲第二個構造器參數時,角度需要創建的實例那個班。

Angulars DI然後在其注入器樹中查找提供者,並從找到匹配提供者的注入器返回一個實例。

對於工作類需要有像@Component()@Directive()@Pipe(),或@Inectable()裝飾器,它僅適用於由角創建的實例。如果你使用new Service()new Router()你是你自己的,並且需要明確地獲取並傳遞所需的構造函數參數。

+0

因此,對於服務,它將通過樹來查看類型爲「服務」的注入,對於類似的路由器? Im是Angular2的新成員,以及更具角度的設計方法論,所以我只是有些模糊,但它聽起來像是有一棵樹和一棵B樹,然後它會查找並找到一個放置進入你的構造函數? – Fallenreaper

+1

樹以'bootstrap()'開始,並且提供程序通過那裏。對於每個組件,創建子組件以及它自己的一組提供程序,以及此組件的子組件等等,等等。所以你得到一個類似於你的組件樹的注入器樹。當DI需要將一個實例傳遞給一個組件時,它開始在這個組件的注入器中查找提供者的這個組件,如果它找到一個它返回並且來自該提供者的實例,否則它向上看,直到它發現一個注入者有一個提供者註冊這個類型。 –

相關問題