Voici ma structure de dossiers.
app
- common
- header
header.component.css
header.component.html
header.component.ts
- footer
footer.component.css
footer.component.html
footer.component.ts
- index
index.component.css
index.component.ts
index.component.html
index.module.ts
- lessons
lesson1(another folder)
lesson2(folder)
lesson.module.ts
app.component.css
app.component.ts
app.component.html
app.module.ts
J'ai importé le composant d'en-tête et de pied de page, index.module, leçon.module dans app.module et utilisé
<app-header></app-header>
<app-navbar></app-navbar>
dans index.component.html, lesson1.component.html, lesson2.component.html.
Mais j'obtiens "app-header" n'est pas une erreur d'élément connue. Quelqu'un peut-il m'aider à résoudre cette erreur?
Cela fonctionne bien si j'inclus des composants d'en-tête et de pied de page directement dans index.module.ts
app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { RouterModule, Routes } from '@angular/router';
import * as $ from 'jquery';
import { AppComponent } from './app.component';
import { HeaderComponent } from './common/header/header.component';
import { FooterComponent } from './common/footer/footer.component';
import { IndexModule } from './index/index.module';
import { LessonModule } from './index/lesson.module';
@NgModule({
imports: [
BrowserModule,
FormsModule,
HttpModule,
RouterModule,
IndexModule,
],
declarations: [
AppComponent,
HeaderComponent,
FooterComponent,
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {
}
index.component.html
<app-header></app-header> <app-navbar></app-navbar>
index.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { IndexComponent } from './index.component';
import { IndexRoutingModule } from './index-routing.module';
@NgModule({
imports: [
CommonModule,
FormsModule,
HttpModule,
IndexRoutingModule
],
declarations: [
IndexComponent
]
})
export class IndexModule { }
leçon.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { Lesson1Component } from './lesson1.component';
import { Lesson2Component } from './lesson2.component';
@NgModule({
imports: [
CommonModule,
FormsModule,
HttpModule,
IndexRoutingModule
],
declarations: [
IndexComponent
]
})
export class IndexModule { }
quel est votre module bootstrap qui charge votre application?
si vous voulez déclarer des composants dans un module et les utiliser dans un autre module, vous devez les export
afin que lorsque vous importerez le module dans un autre module, il comprendra que ceux-ci seront utilisés à partir d'un autre module
donc dans votre app.module.ts
les déclarer et également les exporter pour que le module d'index comprenne qu'ils proviennent d'autres modules.
@NgModule({
imports: [
BrowserModule,
FormsModule,
HttpModule,
RouterModule,
IndexModule,
],
declarations: [
AppComponent,
HeaderComponent,
FooterComponent,
],
exports: [
HeaderComponent,
FooterComponent,
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {
}
et maintenant importer l'app.module dans votre module d'index
@NgModule({
imports: [
AppModule,
CommonModule,
FormsModule,
HttpModule,
IndexRoutingModule
],
declarations: [
IndexComponent
]
})
export class IndexModule { }
Je dirais que votre module d'application est un module bootstrap et créez un module partagé et déclarez tous les composants, les tuyaux, la directive et les exportez. Dans votre module d'application, importez le module partagé et utilisez tous les Composants.
Vous avez importé et déclaré le composant d'en-tête dans app.module mais l'utilisez dans index.module où ils ne sont pas "reconnus".
Déplacez-les vers index.module
import { HeaderComponent } from './common/header/header.component';
...
declarations: [
HeaderComponent,
....