最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解Angular4中的依賴(lài)注入

 更新時(shí)間:2017年06月07日 11:32:10   作者:HaiJing1995  
在Angular中使用依賴(lài)注入,可以幫助我們實(shí)現(xiàn)松耦合,可以說(shuō)只有在組件中使用依賴(lài)注入才能真正的實(shí)現(xiàn)可重用的組件。

在Angular中使用依賴(lài)注入,可以幫助我們實(shí)現(xiàn)松耦合,可以說(shuō)只有在組件中使用依賴(lài)注入才能真正的實(shí)現(xiàn)可重用的組件。
如果我們有個(gè)服務(wù)product.service.ts,其中export了一個(gè)ProductService類(lèi),類(lèi)中有一個(gè)getProduct方法。

如果不使用依賴(lài)注入,假設(shè)我們需要在product組件中使用這個(gè)服務(wù)時(shí)就會(huì)new一個(gè)ProductService類(lèi),但如果這個(gè)組件被用到了另一個(gè)地方,需要的服務(wù)改變了,我們就不得不更改組件中的內(nèi)容,這樣的組件不能說(shuō)是可復(fù)用的。

一、注入器

Angular中的注入器只有一種實(shí)現(xiàn)方法就是在構(gòu)造函數(shù)中聲明。

例如在一個(gè)組件中

constructor(productService: ProductService){}

通俗的講這段代碼的意思就是說(shuō),這個(gè)組件創(chuàng)建了一個(gè)productService,而這個(gè)productService是依賴(lài)ProductService的,這里的ProductService只是一個(gè)token,至于ProductService 是什么,是怎么實(shí)現(xiàn)的,全都是由提供器說(shuō)明的。

二、提供器

通常提供器定義在應(yīng)用級(jí),及app.module.ts中,供所有組件或服務(wù)使用,當(dāng)然也可以定義在某一個(gè)組件中,只供這一個(gè)組件使用。

我們以定義在應(yīng)用級(jí)為例:

@NgModule({
  provides:[ProductService]
})

這段代碼其實(shí)這一個(gè)簡(jiǎn)寫(xiě),全寫(xiě)為:

@NgModule({
  provides:[{
    provide: ProductService,
    useClass:ProductService
  }]
})

這段代碼中的provide聲明的就是我們剛剛在注入器中提過(guò)的token,就是說(shuō)這兩個(gè)token是一一對(duì)應(yīng)的,Angular會(huì)到提供器中找到和注入器相同的token.

代碼中的useClass是實(shí)例化ProductService類(lèi),及我們幫助我們new 了一個(gè)類(lèi)出來(lái)。除了useClass外,比較常用的還用useFactory,使用工廠模式實(shí)例化一個(gè)類(lèi)。

這時(shí)候我們?cè)诮M件中就可以直接使用ProductService類(lèi)中的方法了。

當(dāng)token和想要實(shí)例化的類(lèi)名字相同時(shí),我們就可以使用上面那種簡(jiǎn)寫(xiě)的方法。

說(shuō)了這么多,那到底怎么才能體現(xiàn)出可復(fù)用性呢?

如果現(xiàn)在我們的product組件用到了另一個(gè)地方需要使用另一個(gè)服務(wù),我們命名為AnotherProductService。有了依賴(lài)注入我們就不必要更改組件,而是更改app.module.ts中的提供器:

@NgModule({
  provide: ProductService,
  useClass: AnotherProductService
})

從這段代碼可以看出,token并沒(méi)有改變,可是這是實(shí)例化的類(lèi)變?yōu)榱薃notherProductService。

總結(jié)來(lái)說(shuō),當(dāng)組件在構(gòu)造函數(shù)中說(shuō)明自己想要依賴(lài)一個(gè)類(lèi)時(shí),Angular首先會(huì)在這個(gè)組件自身找有沒(méi)有提供器,如果沒(méi)有就去這個(gè)組件的父組件中找,如果也沒(méi)有找到就去應(yīng)用級(jí)(app.module.ts)中找。找到后,就會(huì)按照提供器可說(shuō)明的為組件注入它想要的。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Angular5中提取公共組件之radio list的實(shí)例代碼

    Angular5中提取公共組件之radio list的實(shí)例代碼

    這篇文章主要介紹了Angular5中提取公共組件之radio list的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • 在Angular使用ng-container元素的操作詳解

    在Angular使用ng-container元素的操作詳解

    ng-container 是 Angular 2+ 中可用的一個(gè)元素,可以作為結(jié)構(gòu)指令的宿主,在本文中,您將探討可以使用 ng-container 解決的場(chǎng)景,文中有相關(guān)的代碼示例供大家參考,具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-02-02
  • AngularJS教程之簡(jiǎn)單應(yīng)用程序示例

    AngularJS教程之簡(jiǎn)單應(yīng)用程序示例

    本文主要介紹AngularJS簡(jiǎn)單應(yīng)用程序,這里提供了詳細(xì)的流程和代碼程序,有需要的小伙伴可以參考下
    2016-08-08
  • 解決angular雙向綁定無(wú)效果,ng-model不能正常顯示的問(wèn)題

    解決angular雙向綁定無(wú)效果,ng-model不能正常顯示的問(wèn)題

    今天小編就為大家分享一篇解決angular雙向綁定無(wú)效果,ng-model不能正常顯示的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • ionic選擇多張圖片上傳的示例代碼

    ionic選擇多張圖片上傳的示例代碼

    本篇文章主要介紹了ionic選擇多張圖片上傳的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • angular2 NgModel模塊的具體使用方法

    angular2 NgModel模塊的具體使用方法

    這篇文章主要介紹了angular2 NgModel模塊的具體使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Angularjs 動(dòng)態(tài)改變title標(biāo)題(兼容ios)

    Angularjs 動(dòng)態(tài)改變title標(biāo)題(兼容ios)

    這篇文章主要介紹了 Angularjs 動(dòng)態(tài)改變title標(biāo)題(兼容ios)的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • AngularJs 最新驗(yàn)證手機(jī)號(hào)碼的實(shí)例,成功測(cè)試通過(guò)

    AngularJs 最新驗(yàn)證手機(jī)號(hào)碼的實(shí)例,成功測(cè)試通過(guò)

    下面小編就為大家分享一篇AngularJs 最新驗(yàn)證手機(jī)號(hào)碼的實(shí)例,成功測(cè)試通過(guò),具有很好的參考價(jià)值。希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • 詳解angular臟檢查原理及偽代碼實(shí)現(xiàn)

    詳解angular臟檢查原理及偽代碼實(shí)現(xiàn)

    這篇文章主要介紹了詳解angular臟檢查原理及偽代碼實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Angular組件間通信的新解決方案詳解

    Angular組件間通信的新解決方案詳解

    本文通過(guò)對(duì)比幾種Angular組件間的通信方式,給大家介紹了一種新的Angular組件間通信的解決方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08

最新評(píng)論

思南县| 公安县| 甘谷县| 屯留县| 济源市| 延安市| 峡江县| 襄汾县| 东安县| 西林县| 山丹县| 梧州市| 南雄市| 海阳市| 恩平市| 怀远县| 长沙市| 南阳市| 扬州市| 蒙城县| 教育| 桐梓县| 武清区| 墨江| 祁连县| 嘉义县| 康乐县| 璧山县| 昔阳县| 钟山县| 承德市| 四川省| 土默特右旗| 元氏县| 靖远县| 普宁市| 朝阳区| 宁明县| 额敏县| 太仓市| 毕节市|