2017-02-23 3 views
1

Ich habe einen Fehler in meiner Angular2-Klasse und ich habe nicht klar verstanden über @Input.Angular @ Input arbeitet nicht mit Bootstrap-Komponente

Ich habe 2 Komponenten AppComponent und AppDetailComponent erstellt.

In AppDetailComponent:

import { Component, Input } from '@angular/core'; 


@Component ({ 
selector: 'app-detail', 
template: 'Hi {{datainput}}' 
}) 

export class AppDetailComponent { 

@Input() 
datainput: string; 

} 

und in AppComponent Vorlage:

<h1> 
    {{title}} 
</h1> 
<app-detail [datainput]="'test'"></app-detail> 

und in App-Modul machte ich einen Fehler durch hinzufügen AppDetailComponent als Bootstrap-Komponente

import { AppComponent } from './app.component'; 
import { AppDetailComponent } from './app-detail.component'; 

@NgModule({ 
    declarations: [ 
    AppComponent, AppDetailComponent 
    ], 
    imports: [ 
    BrowserModule, 
    FormsModule, 
    HttpModule 
    ], 
    providers: [], 
    bootstrap: [AppComponent, AppDetailComponent] 
}) 
export class AppModule { } 

Nachdem ich entfernt AppDetailComponent aus der Bootstrap-Liste, Programm hat korrekt funktioniert.

Ich verstehe nicht warum @input nicht funktioniert, wenn ich es als Bootstrap-Komponente verwenden?

Wird Angular immer Input-Eigenschaft ignorieren, obwohl ich die Eingabe von einer anderen Winkelkomponente senden?

Antwort

0

@Inputs() können nur in Vorlagen einer Komponente gebunden werden. Bootstrapped Komponenten sind in index.html außerhalb jeder anderen Komponente und daher dort ist es nicht möglich, an Eingaben zu binden.

Siehe auch Angular 2 external inputs

Wenn Sie keinen passenden Wähler in index.html haben und nicht wollen, dass eine Komponente als Stammkomponente verwenden, dann fügen Sie es nicht zu bootstrap: [...]

+0

Ich bin mir nicht sicher, ob ich dich richtig verstehe. Ich habe keine Eingabe in index.html sondern app.component.html hinzugefügt, die als templateUrl von AppComponent deklariert wurde. – user2930562

+0

Warum haben Sie 'AppDetailComponent' zu' bootstrap: [] 'hinzugefügt? –

+0

Danke. Ich habe einen Fehler gemacht, aber ich möchte einen Grund wissen. Ich versuche, Javascript-Datei zu überprüfen, aber ich habe nichts gefunden. – user2930562

0

Sie müssen Bootstrap nur die AppComponent.

import { AppComponent } from './app.component'; 
import { AppDetailComponent } from './app-detail.component'; 

@NgModule({ 
    declarations: [AppComponent, AppDetailComponent], 
    imports: [ 
    BrowserModule, 
    FormsModule, 
    HttpModule 
    ], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 
Verwandte Themen