成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Angular6的服務(wù)和依賴注入

sugarmo / 2864人閱讀

摘要:把組件和服務(wù)區(qū)分開,以提高模塊性和復(fù)用性。而要把這些任務(wù)委托給各種服務(wù)。它只會(huì)通過依賴注入讓你能更容易地將應(yīng)用邏輯分解為服務(wù),并讓這些服務(wù)可用于各個(gè)組件中。

Angular 把組件和服務(wù)區(qū)分開,以提高模塊性和復(fù)用性。

通過把組件中和視圖有關(guān)的功能與其他類型的處理分離開,你可以讓組件類更加精簡、高效。 理想情況下,組件的工作只管用戶體驗(yàn),而不用顧及其它。 它應(yīng)該提供用于數(shù)據(jù)綁定的屬性和方法,以便作為視圖(由模板渲染)和應(yīng)用邏輯(通常包含一些模型的概念)的中介者。

組件不應(yīng)該定義任何諸如從服務(wù)器獲取數(shù)據(jù)、驗(yàn)證用戶輸入或直接往控制臺(tái)中寫日志等工作。 而要把這些任務(wù)委托給各種服務(wù)。通過把各種處理任務(wù)定義到可注入的服務(wù)類中,你可以讓它可以被任何組件使用。 通過在不同的環(huán)境中注入同一種服務(wù)的不同提供商,你還可以讓你的應(yīng)用更具適應(yīng)性。

Angular 不會(huì)強(qiáng)制遵循這些原則。它只會(huì)通過依賴注入讓你能更容易地將應(yīng)用邏輯分解為服務(wù),并讓這些服務(wù)可用于各個(gè)組件中。

在Angular中使用服務(wù),首先根據(jù)需要的功能,寫一個(gè)服務(wù)類(angular中稱為provider),然后將該服務(wù)類注冊(cè)到注入器中(應(yīng)用啟動(dòng)時(shí)自動(dòng)創(chuàng)建),之后就可以在組件類或其他服務(wù)中通過Angular的依賴注入系統(tǒng)使用了,Angular會(huì)自動(dòng)將該類實(shí)例化,并處理好依賴關(guān)系.

在Angular中有很多方式可以將服務(wù)類注冊(cè)到注入器中:

@Injectable 元數(shù)據(jù)中的providedIn屬性

@NgModule 元數(shù)據(jù)中的 providers屬性

@Component 元數(shù)據(jù)中的 providers屬性

不同的注冊(cè)方式,生成的服務(wù)也有所不同.

在服務(wù)類的 @Injectable 裝飾器中:

//service
@Injectable({
    providedIn: "root",
})

providedIn: "root" 告訴 Angular在根注入器中注冊(cè)這個(gè)服務(wù),這也是使用CLI生成服務(wù)時(shí)默認(rèn)的方式.
這種方式注冊(cè),不需要再@NgModule裝飾器中寫providers,而且在代碼編譯打包時(shí),可以執(zhí)行搖樹優(yōu)化,會(huì)移除所有沒在應(yīng)用中使用過的服務(wù)。推薦使用此種方式注冊(cè)服務(wù).

在模塊@NgModule 中的 providers

//service
@Injectable()
//module
@NgModule({
    providers: [
        UserService,
        { provide: APP_CONFIG, useValue: HERO_DI_CONFIG }
    ],
})

這種方式注冊(cè),可以對(duì)服務(wù)進(jìn)行一些額外的配置(服務(wù)類中也需要寫@Injectable()裝飾器).

在組件 @Component 中的 providers

@Component({
selector: "app-heroes",
providers: [ HeroService ]

這種方式注冊(cè),會(huì)注冊(cè)到每個(gè)組件實(shí)例自己的注入器上。(多個(gè)組件會(huì)有多個(gè)注入器)

不提供服務(wù)類

最常見的圖紙是class,但是在配置providers: []時(shí),也可以不提供服務(wù)類,而是返回對(duì)象的工廠函數(shù),或是對(duì)象字面量[{ provide: Logger, useClass: Logger }]
也可以使用useValue屬性直接交付一個(gè)對(duì)象實(shí)例,[{ provide: Logger, useValue: silentLogger }]

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/95712.html

相關(guān)文章

  • 【CuteJavaScript】Angular6入門項(xiàng)目(3.編寫服務(wù)引入RxJS)

    摘要:發(fā)布通過回調(diào)方法向發(fā)布事件。觀察者一個(gè)回調(diào)函數(shù)的集合,它知道如何去監(jiān)聽由提供的值。 本文目錄 一、項(xiàng)目起步 二、編寫路由組件 三、編寫頁面組件 1.編寫單一組件 2.模擬數(shù)據(jù) 3.編寫主從組件 四、編寫服務(wù) 1.為什么需要服務(wù) 2.編寫服務(wù) 五、引入RxJS 1.關(guān)于RxJS 2.引入RxJS 3.改造數(shù)據(jù)獲取方式 六、改造組件 1.添...

    RebeccaZhong 評(píng)論0 收藏0
  • Angular6錯(cuò)誤 Service: No provider for Renderer2

    摘要:解決辦法很簡單,既然無法注入就不注入??梢岳霉S類代替直接注入的方式。示例代碼如下利用對(duì)象去操作元素即可 這個(gè)錯(cuò)誤一般是在構(gòu)造函數(shù)中 注入 Renderer2 引起的。 解決辦法很簡單,既然無法注入Renderer2就不注入??梢岳霉S類RendererFactory2 代替直接注入Renderer2的方式。示例代碼如下: import { Renderer2, RendererF...

    rickchen 評(píng)論0 收藏0
  • 初探Angular6.x---主從組件

    摘要:在上一篇博文用戶列表與詳情展示中我們用實(shí)現(xiàn)了用戶列表的展示并通過語法實(shí)現(xiàn)了列表單擊時(shí)將單擊的對(duì)象傳到后臺(tái)的功能最后為了防止初次加載對(duì)象為空導(dǎo)致的錯(cuò)誤我們又使用了語法來對(duì)要展示的詳情對(duì)象進(jìn)行判空操作但隨著后續(xù)模塊的增多以及業(yè)務(wù)的交叉我們    在上一篇博文《Angular6.x---用戶列表與詳情展示》中,我們用ngFor=let object of list實(shí)現(xiàn)了用戶列表的展示,并通過...

    FingerLiu 評(píng)論0 收藏0
  • 【CuteJavaScript】Angular6入門項(xiàng)目(4.改造組件添加HTTP服務(wù)

    摘要:然后我們?cè)诟附M件上添加事件監(jiān)聽,并傳入本地的在對(duì)應(yīng)的中添加方法再來,我們?cè)谧咏M件上多導(dǎo)入和,并添加修飾器和調(diào)用這樣就實(shí)現(xiàn)了我們父子組件之間的事件傳遞啦,現(xiàn)在我們的頁面還是正常運(yùn)行,并且刪除一條數(shù)據(jù)后,頁面數(shù)據(jù)會(huì)更新。 本文目錄 一、項(xiàng)目起步 二、編寫路由組件 三、編寫頁面組件 1.編寫單一組件 2.模擬數(shù)據(jù) 3.編寫主從組件 四、編寫服務(wù) 1.為什么需要服務(wù) ...

    BDEEFE 評(píng)論0 收藏0
  • 【CuteJavaScript】Angular6入門項(xiàng)目(1.構(gòu)建項(xiàng)目創(chuàng)建路由)

    摘要:啟動(dòng)服務(wù),并打開新窗口可簡寫創(chuàng)建新組件可簡寫創(chuàng)建新服務(wù)創(chuàng)建路由模塊其他另外還有很多的命令提供,詳細(xì)可以查閱官方文檔命令。引入路由模塊導(dǎo)出路由模塊的指令這里需要添加一個(gè)數(shù)組,并傳入,導(dǎo)出讓路由器的相關(guān)指令可以在中的組件中使用。 本文目錄 一、項(xiàng)目起步 二、編寫路由組件 三、編寫頁面組件 1.編寫單一組件 2.模擬數(shù)據(jù) 3.編寫主從組件 四、編寫服務(wù) 1.為什么需要服務(wù) 2....

    bergwhite 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<