Ich habe bei den anderen Angular2 RC6 Eltern-Kind-Beiträge gesucht, aber keiner von ihnen lösen das Problem das ich habe.Angular2 RC6 Eltern Kind Komponenten
Ich habe meine Haupt AppModule bekam, die eine HomeModule importiert. Das scheint zu funktionieren. Jetzt habe ich hinzugefügt, um eine mapModule die angular2-Google-Maps als Import in meine HomeModule implementiert und ich erhalte die Fehlermeldung:
'google-map' is not a known element:
1. If 'google-map' is an Angular component, then verify that it is part of this module.
2. If 'google-map' is a Web Component then add "CUSTOM_ELEMENTS_SCHEMA" to the '@NgModule.schema' of this component to suppress this message. ("<h1>home</h1>[ERROR ->]<google-map></google-map>"): [email protected]:13
Hier ist mein Setup:
// ----------
// AppModule
// ----------
@NgModule({
imports: [
BrowserModule,
FormsModule,
ReactiveFormsModule,
HttpModule,
HomeModule,
routing
],
declarations: [
AppComponent,
],
// schemas: [CUSTOM_ELEMENTS_SCHEMA],
providers: [
{provide: APP_BASE_HREF, useValue : '/' },
{provide: LocationStrategy, useClass: HashLocationStrategy}
],
bootstrap: [AppComponent]
})
export class AppModule {}
// ----------
// HomeModule
// ----------
@NgModule({
imports: [
BrowserModule,
FormsModule,
ReactiveFormsModule,
HttpModule,
MapModule,
],
declarations: [
HomeComponent
],
bootstrap: [HomeComponent]
})
export class HomeModule {}
// ----------
// HomeComponent
// ----------
@Component({
selector: 'home',
template: "<h1>home</h1><google-map></google-map>",
styleUrls: ['home.scss'],
})
export class HomeComponent {}
// ----------
// MapModule
// ----------
@NgModule({
imports: [
BrowserModule,
CommonModule,
FormsModule,
AgmCoreModule.forRoot({
apiKey: '<my-api-key>'
})
],
declarations: [MapComponent],
providers: [MapService],
bootstrap: [MapComponent]
})
export class MapModule {}
// ----------
// Map Component
// ----------
@Component({
selector: 'google-map',
templateUrl: 'map.component.html',
styleUrls: ['map.scss']
})
export class MapComponent {}
Zugabe CUSTOM_ELEMENTS_SCHEMA auf die Modul beseitigt den Fehler, aber die Karte wird nicht gerendert.
Wenn ich den mapModule Teil des AppModule direkt statt wie ein Kind auf die HomeModule machen dann sehe ich die Karte.
Irgendwelche Hinweise?
**** bearbeiten ****
Vielen Dank für die bisher Kommentare. Mein Code sieht jetzt sauberer aus. Ich habe die folgenden Änderungen basierend auf Kommentaren angewendet, aber der Fehler bleibt derselbe. Mein neuer Code sieht wie folgt aus.
// ----------
// AppModule
// ----------
@NgModule({
imports: [
BrowserModule,
FormsModule,
ReactiveFormsModule,
HttpModule,
HomeModule,
routing
],
declarations: [
AppComponent,
],
// schemas: [CUSTOM_ELEMENTS_SCHEMA],
providers: [
{provide: APP_BASE_HREF, useValue : '/' },
{provide: LocationStrategy, useClass: HashLocationStrategy}
],
bootstrap: [AppComponent]
})
export class AppModule {}
// ----------
// HomeModule
// ----------
@NgModule({
imports: [
CommonModule,
MapModule,
],
declarations: [
HomeComponent
]
})
export class HomeModule {}
// ----------
// HomeComponent
// ----------
@Component({
selector: 'home',
template: "<h1>home</h1><google-map></google-map>",
styleUrls: ['home.scss'],
})
export class HomeComponent {}
// ----------
// MapModule
// ----------
@NgModule({
imports: [
CommonModule,
AgmCoreModule.forRoot({
apiKey: '<my-api-key>'
})
],
declarations: [MapComponent],
providers: [MapService]
})
export class MapModule {}
// ----------
// Map Component
// ----------
@Component({
selector: 'google-map',
templateUrl: 'map.component.html',
styleUrls: ['map.scss']
})
export class MapComponent {}
Zusätzlich überprüfte ich den Link zur anderen Stack-Überlauf Ausgabe zur Verfügung gestellt, und ich bemerkte sie in ihrem Beispiel ein Eltern-Kind-Beispiel hatte aber das Kind ein Modul nicht an sie gebunden hat. Die MapComponent in meinem Beispiel ist ziemlich komplex mit Verbindungen zum angular2-google-map-Modul und scheint so zu sein, als müsste es ein eigenes Modul haben, um das zu handhaben.
** Edit 2 **
Ich habe einen Plunker Beitrag hinzugefügt, mein Problem zu replizieren. http://plnkr.co/edit/7M71N6ttYR2s9yNdB3UT?p=preview
Beachten Sie, dass nur die '' app.module' BrowserModule' importieren sollte und haben eine 'bootstrap' Eigenschaft. Können Sie diese aus den Modulen entfernen und sehen, ob das geholfen hat? Es sind auch keine doppelten Importe von 'FormsModule' und' HttpModule' sowie 'ReactiveFormsModule' notwendig. Es ist ausreichend, dass das 'app.module' sie importiert. – mrgoos
Um den @mrgoos-Hinweis zu erweitern, sollten andere Module 'CommonModule' anstelle von' BrowserModule' importieren ('BrowserModule' exportiert' CommonModule', daher müssen Sie 'CommonModule' nicht erneut hinzufügen, wenn Sie' BrowserModule' importieren). –
Wahr. So wie er es in 'MapModule' getan hat. – mrgoos