Angular設(shè)計模式hierarchical?injector實現(xiàn)代碼復(fù)用模塊化
Angular 的 "dependency injection"
Angular 的 "dependency injection" 是一種設(shè)計模式,它可以幫助我們更有效地組織和共享代碼。在 Angular 中,我們可以通過注入服務(wù)(一個常見的可注入對象類型)到組件、指令或其他服務(wù)中,實現(xiàn)代碼的復(fù)用和模塊化。
Angular 的注入器系統(tǒng)是分層級的,也被稱為 "hierarchical injector"。這意味著你可以在不同的層級創(chuàng)建和注入服務(wù),從而決定它們的作用范圍和共享行為。
工作原理
舉個例子,假設(shè)你有一個 LoggerService 用于記錄應(yīng)用的日志信息。你可以在應(yīng)用的根模塊 AppModule 中提供這個服務(wù):
import { LoggerService } from './logger.service';
@NgModule({
providers: [ LoggerService ],
...
})
export class AppModule { }這樣,LoggerService 就成了一個單例服務(wù),整個應(yīng)用只會有一個 LoggerService 實例。你可以在任何需要的地方注入這個服務(wù):
import { LoggerService } from './logger.service';
@Component({
...
})
export class SomeComponent {
constructor(private logger: LoggerService) {
this.logger.log('Hello World!');
}
}然而,有時候你可能希望在某個特定的組件及其子組件中使用一個獨立的 LoggerService 實例。這時,你就可以在那個組件的元數(shù)據(jù)中提供 LoggerService:
import { LoggerService } from './logger.service';
@Component({
providers: [ LoggerService ],
...
})
export class SomeSpecificComponent {
constructor(private logger: LoggerService) {
this.logger.log('Hello Specific World!');
}
}在這種情況下,SomeSpecificComponent 及其所有子組件中注入的 LoggerService 都會是這個新的實例,而不是在 AppModule 中提供的單例。
這就是 Angular 的 "hierarchical injector" 的工作原理。每個注入器都有一個父注入器,當(dāng)你嘗試在某個組件中注入服務(wù)時,Angular 會首先在該組件的注入器中查找該服務(wù),如果沒找到,就會去父注入器中查找,這個過程會一直持續(xù)到根注入器。如果在整個過程中都沒找到該服務(wù),Angular 就會拋出錯誤。
以上就是Angular設(shè)計模式hierarchical injector實現(xiàn)代碼復(fù)用模塊化的詳細內(nèi)容,更多關(guān)于Angular hierarchical injector的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解angularjs 關(guān)于ui-router分層使用
本篇文章主要介紹了詳解angularjs 關(guān)于ui-router分層使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06
Angular 4環(huán)境準備與Angular cli創(chuàng)建項目詳解
Angular4.0來了,更小,更快,改動少,所以下面這篇文章主要給大家介紹了關(guān)于Angular 4環(huán)境準備與學(xué)會使用Angular cli創(chuàng)建項目的相關(guān)資料,文中給出了詳細的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面來一起看看吧。2017-05-05
angular.js+node.js實現(xiàn)下載圖片處理詳解
這篇文章主要介紹了angular.js+node.js實現(xiàn)下載圖片處理的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-03-03
Angular4學(xué)習(xí)教程之DOM屬性綁定詳解
這篇文章主要給大家介紹了關(guān)于Angular4學(xué)習(xí)教程之DOM屬性綁定的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01
AngularJS基礎(chǔ) ng-list 指令詳解及示例代碼
本文主要介紹AngularJS ng-list 指令,這里幫大家整理了ng-list指令的基本資料,并附有示例代碼,有需要的小伙伴可以參考下2016-08-08
AngularJS學(xué)習(xí)第一篇 AngularJS基礎(chǔ)知識
這篇文章主要介紹了AngularJS學(xué)習(xí)第一篇,分享了有關(guān)AngularJS的基礎(chǔ)知識,主要包括指令、過濾器等,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02

