angular2 的依賴注入包含了太多的內容,其中的一個重點就是注入器,而注入器又非常難理解,今天我們不深入介紹注入器的內容,可以參考官方文檔,我們今天來說注入器的層級。

也就是組件獲取服務的容器會選擇具體哪一個。

先簡單介紹一個背景:有3個組件AppComponent 根組件、DetailList組件 ( 日志列表組件)、Detail組件( 日志組件)。

這三個組件會形成一個組件樹,對應的我們也可以認為每個組件都會有一個獨立的注入器(有時候不會出現(xiàn),但是可以這么認為)。

加入一個日志服務LoggerService,如果按照我們普通的入門方式,在根模塊providers 中提供LoggerService。那么在整個應用程序中,LoggerService只有一個實例,什么意思呢?就是說無論在哪個組件,獲取到的都是首次創(chuàng)建的LoggerService,所有組件共用一個服務實例,這有時候會是一個有用的特性,比如我們使用的全局配置。


全局唯一不是我們這次要驗證的重點,因為這個太普通,我們這次要說明的是我們如何在每個組件中都獲取單獨的LoggerService實例,即每個組件的實例都不同。這個就需要對ng2的依賴注入有所了解才可以。

我們逐步來說明如何實現(xiàn)?

為了便于看到這篇短文的同學有所了解,我加入一些基礎代碼。

1.app.module.ts 應用程序根模塊。注意此處我們沒有在Providers中注冊loggerService。當然注冊了通過后面的方法也可以達到我們的目的。