Angular9 共享特性模塊

2020-07-03 14:06 更新

創(chuàng)建共享模塊能讓你更好地組織和梳理代碼。你可以把常用的指令、管道和組件放進(jìn)一個(gè)模塊中,然后在應(yīng)用中其它需要這些的地方導(dǎo)入該模塊。

想象某個(gè)應(yīng)用有下列模塊:

import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { CustomerComponent } from './customer.component';
import { NewItemDirective } from './new-item.directive';
import { OrdersPipe } from './orders.pipe';


@NgModule({
 imports:      [ CommonModule ],
 declarations: [ CustomerComponent, NewItemDirective, OrdersPipe ],
 exports:      [ CustomerComponent, NewItemDirective, OrdersPipe,
                 CommonModule, FormsModule ]
})
export class SharedModule { }

請(qǐng)注意以下幾點(diǎn):

  • 它導(dǎo)入了 CommonModule,因?yàn)樵撃K需要一些常用指令。

  • 它聲明并導(dǎo)出了一些工具性的管道、指令和組件類(lèi)。

-它重新導(dǎo)出了 CommonModuleFormsModule

通過(guò)重新導(dǎo)出 CommonModuleFormsModule,任何導(dǎo)入了這個(gè) SharedModule 的其它模塊,就都可以訪問(wèn)來(lái)自 CommonModuleNgIfNgFor 等指令了,也可以綁定到來(lái)自 FormsModule 中的 [(ngModel)] 的屬性了。

即使 SharedModule 中聲明的組件沒(méi)有綁定過(guò) [(ngModel)],而且 SharedModule 也不需要導(dǎo)入 FormsModule,SharedModule 仍然可以導(dǎo)出 FormsModule,而不必把它列在 imports 中。 這種方式下,你可以讓其它模塊也能訪問(wèn) FormsModule,而不用直接在自己的 @NgModule 裝飾器中導(dǎo)入它。

使用來(lái)自其它模塊的組件和服務(wù)

在使用來(lái)自其它模塊的組件和來(lái)自其它模塊的服務(wù)時(shí),有一個(gè)很重要的區(qū)別。 當(dāng)你要使用指令、管道和組件時(shí),導(dǎo)入那些模塊就可以了。而導(dǎo)入帶有服務(wù)的模塊意味著你會(huì)擁有那個(gè)服務(wù)的一個(gè)新實(shí)例,這通常不會(huì)是你想要的結(jié)果(你通常會(huì)想取到現(xiàn)存的服務(wù))。使用模塊導(dǎo)入來(lái)控制服務(wù)的實(shí)例化。

獲取共享服務(wù)的最常見(jiàn)方式是通過(guò) Angular 的依賴(lài)注入系統(tǒng),而不是模塊系統(tǒng)(導(dǎo)入模塊將導(dǎo)致創(chuàng)建新的服務(wù)實(shí)例,那不是典型的用法)。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)