Ich habe eine einfache Benutzeroberfläche, die aus zwei Komponenten (Eltern und Kind) bestehen.Angular 2 ngModel in untergeordneten Komponente aktualisiert übergeordneten Komponente Eigenschaft
Was die Benutzeroberfläche tut, ist, dass wenn ich einige Sachen in das Eingabefeld der Child-Komponente eintippe. Der Wert ändert sich mit ngModel.
Die Kindkomponente funktioniert auf diese Weise.
Jetzt habe ich eine Elternkomponente, die ich den gleichen Wert wie Child-Komponente verwenden möchte.
Ich habe die untergeordnete Komponente in die übergeordnete Vorlage eingefügt und die Abhängigkeitsinjektion verwendet, um die sharedVar
der untergeordneten Komponente aufzurufen.
// Parent Component
@Component({
selector: 'parent',
template: `
<h1>{{sharedVar}}</h1>
<child></child>
`,
directives: [ChildComponent],
providers: [ChildCompnent]
})
export class ParentComponent {
sharedVar: string;
constructor(child: ChildComponent) {
this.sharedVar = child.sharedVar;
}
}
Das Problem ist, wie ich in das Eingabefeld tippen bin, wird der Wert in <p>
ändert sich automatisch, während der Wert in <h1>
der Mutterkomponente ändern sich nicht.
Injizieren Sie keine Komponenten, Sie übergeben Werte an untergeordnete Komponenten mit '@ Input' https://angular.io/docs/ts/latest/api/core/Input-var.html, der von der Vorlage erstellten Instanz und die Instanz, die Sie durch Angabe eines Providers erstellen, sind zwei verschiedene Instanzen. – Langley