2017-11-07 162 views
7

Açısal uygulamasında, tüm bileşenleri tutan bir presentation.module var. Tüm uygulamada kullanılan tüm açısal malzeme 2 modüllerini içeren bir shared-material.module oluşturduk. Önceki presentation.module'da içe aktardım. Benim app.module, presentation.module'u aldım. 'mat-form-alan' bilinen bir öğe değil - Açısal 4 ve Açısal Malzeme 2

app.module

app.component, header.component ve burada footer.component

onun bildiriminde var benim app.module:

İşte
@NgModule({ 
    declarations: [ 
    AppComponent, 
    HeaderComponent, 
    FooterComponent 
    ], 
    imports: [ 
    // Layer's modules 
    PresentationModule, 
    BusinessDelegateModule, 
    ], 
    providers: [], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 

olan benim presentation.module:

const modules = [ 
    SharedMaterialModule, 
    SharedModule, 
    HomePresentationModule, 
    SecurityPresentationModule, 
] 

@NgModule({ 
    imports: [...modules], 
    exports: [...modules] 
}) 
export class PresentationModule { 
} 

shared-material.module kaynak kodu:

Eğer feryat görebileceğiniz gibi
// 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 { 
} 

, burada kaynak kodu bir security-presentation.module kaydedildi: I (security-presentation.module olarak) login.component içinde mat-input-field kullanmaya çalıştığınızda

@NgModule({ 
    imports: [ 
    SharedModule, 
    SecurityRoutingModule 
    ], 
    declarations: [ 
    LoginComponent, 
    RegisterComponent, 
    EmailConfirmationComponent, 
    PasswordResetComponent 
    ] 
}) 
export class SecurityPresentationModule { 
} 

Benim sorundur, ben

Uncaught Error: Template parse errors: 
'mat-form-field' is not a known element 

Ama diğer açısal malzeme 2 bileşenlerinin app.component iyi çalışır, header.component ve: Bu hata var:

app.component.html

<div> 

    <app-header></app-header> 

    <div class="main-container"> 
    <router-outlet></router-outlet> 
    </div> 

    <app-footer></app-footer> 

</div> 

Her sunum modülünde shared-material.module içe olmalı ya Bunu düzeltmek için bir yol var mı?

Önceden teşekkür ederiz. Paylaşılan modül ilk malzeme modülleri içe olmalıdır Çünkü

cevap

2

:

const materialModules = [ 
    MatButtonModule, 
    MatMenuModule, 
    MatToolbarModule, 
    MatIconModule, 
    MatCardModule, 
    MatSidenavModule, 
    MatFormFieldModule, 
    MatInputModule, 
    MatTooltipModule 
]; 
@NgModule({ 
    imports: [...materialModules], 
    exports: [...materialModules], 
    declarations: [] 
}) 
export class SharedMaterialModule { 
} 
+0

Ben zaten bu 'imports' özelliği eklemiş, aynı hataları var. – Laiso

+1

Üzgünüz, kodunuzda yoktu. Sunum modülüne de koydun mu? Eğer öyleyse, mesajınıza ekleyebilecekseniz harika olur, çünkü gördüğünüz gibi kafa karıştırıcı olabilir. – trichetriche

+0

Gönderiyi güncelledim. Bazı malzeme modüllerinin neden "app.component", "header.component" ve "footer.component" bileşenlerinde düzgün çalıştığını ve bunları paylaşılan modülde içe aktardığım halde başka görünümlerde çalışmadığını anlamıyorum. – Laiso