W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
創(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):
CommonModule
,因?yàn)樵撃K需要一些常用指令。
-它重新導(dǎo)出了 CommonModule
和 FormsModule
。
通過(guò)重新導(dǎo)出 CommonModule
和 FormsModule
,任何導(dǎo)入了這個(gè) SharedModule
的其它模塊,就都可以訪問(wèn)來(lái)自 CommonModule
的 NgIf
和 NgFor
等指令了,也可以綁定到來(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)自其它模塊的組件和來(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í)例,那不是典型的用法)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: