Angular9 共享特性模塊

2020-07-03 14:06 更新

創(chuà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 { }

請注意以下幾點:

  • 它導入了 CommonModule,因為該模塊需要一些常用指令。

  • 它聲明并導出了一些工具性的管道、指令和組件類。

-它重新導出了 CommonModuleFormsModule 。

通過重新導出 CommonModuleFormsModule,任何導入了這個 SharedModule 的其它模塊,就都可以訪問來自 CommonModuleNgIfNgFor 等指令了,也可以綁定到來自 FormsModule 中的 [(ngModel)] 的屬性了。

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

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

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

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號