angularアプリケーションには、すべてのコンポーネントを保持するpresentation.module
があります。アプリ全体で使用されるすべてのangularマテリアル2モジュールを含むshared-material.module
を作成しました。前のpresentation.module
でインポートしました。 app.module
で、presentation.module
をインポートしました。
app.module
の宣言にはapp.component
、header.component
、およびfooter.component
があります
これが私のapp.module
です:
@NgModule({
declarations: [
AppComponent,
HeaderComponent,
FooterComponent
],
imports: [
// Layer's modules
PresentationModule,
BusinessDelegateModule,
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
これが私のpresentation.module
です:
const modules = [
SharedMaterialModule,
SharedModule,
HomePresentationModule,
SecurityPresentationModule,
]
@NgModule({
imports: [...modules],
exports: [...modules]
})
export class PresentationModule {
}
shared-material.module
のソースコード:
// updated: Before, i have just imported these modules without re-exporting them.
const materialModules = [
MatButtonModule,
MatMenuModule,
MatToolbarModule,
MatIconModule,
MatCardModule,
MatSidenavModule,
MatFormFieldModule,
MatInputModule,
MatTooltipModule
];
@NgModule({
imports: [...materialModules],
exports: [...materialModules],
declarations: []
})
export class SharedMaterialModule {
}
ご覧のとおり、security-presentation.module
を登録しました。ソースコードは次のとおりです。
@NgModule({
imports: [
SharedModule,
SecurityRoutingModule
],
declarations: [
LoginComponent,
RegisterComponent,
EmailConfirmationComponent,
PasswordResetComponent
]
})
export class SecurityPresentationModule {
}
私の問題は、mat-input-field
(login.component
)でsecurity-presentation.module
を使用しようとすると、このエラーが発生することです。
Uncaught Error: Template parse errors:
'mat-form-field' is not a known element
ただし、他のangularマテリアル2コンポーネントは、app.component
、header.component
、およびfooter.component
で正常に機能します。
app.component.html
<div>
<app-header></app-header>
<div class="main-container">
<router-outlet></router-outlet>
</div>
<app-footer></app-footer>
</div>
各プレゼンテーションモジュールにshared-material.module
をインポートする必要がありますか、またはこれを修正する方法はありますか?
前もって感謝します。
共有モジュールは最初に材料モジュールをインポートする必要があるため:
const materialModules = [
MatButtonModule,
MatMenuModule,
MatToolbarModule,
MatIconModule,
MatCardModule,
MatSidenavModule,
MatFormFieldModule,
MatInputModule,
MatTooltipModule
];
@NgModule({
imports: [...materialModules],
exports: [...materialModules],
declarations: []
})
export class SharedMaterialModule {
}