So aktualisieren Sie den JSON-Wert ' von einer untergeordneten Komponente zur übergeordneten Komponente. Wenn ich versuche, den Wert vom Kindmodell mit Ausgabeereignis in eine Elternkomponente zu aktualisieren, funktioniert nichts.Angular 2 [typescript] Aktualisieren eines Modellwerts der UI der übergeordneten Komponente von einer untergeordneten Komponenten-UI mit dem JSON-Modell
i all Details unten angegebene
Daten behandelt:
json: [{
"inp": "hello",
"oup": "fello"
}]
Stammkomponente
// Parent Component
@Component({
selector: 'parent',
template: `
<div>Parent sharedVarParent: {{sharedVarParent[0].oup}}
<input type="text" [ngModel]="sharedVarParent[0].oup"/>
</div>
<child [(sharedVar)]="sharedVarParent"></child>
`,
directives: [ChildComponent]
})
export class ParentComponent {
sharedVarParent =[{
"inp": "hello",
"oup": "fello"
}]
constructor() { console.clear(); }
}
childcomponent
import {Component, EventEmitter, Input, Output} from 'angular2/core'
// Child Component
@Component({
selector: 'child',
template: `
<p>Child sharedVar: {{sharedVar[0].oup}}</p>
<input [ngModel]="sharedVar[0].oup" (ngModelChange)="change($event)">
`
})
export class ChildComponent {
@Input() sharedVar: string;
@Output() sharedVarChange = new EventEmitter();
change(newValue) {
console.log('newvalue', newValue)
this.sharedVar = newValue;
this.sharedVarChange.emit(newValue);
}
}
Du es als String deklarieren, wenn es wirklich ist es 'Array' oder ein Array von welcher Art auch immer hat ‚inp‘ und ‚oup‘ Eigenschaften. Ich glaube nicht, dass das das Problem ist. Es sieht so aus, als würden Sie das Modell des Inputs auf die Eigenschaft 'oup' des ersten Elements im Array (eine Zeichenkette) setzen und dieses in der Änderung ausgeben. Würden Sie 'sharedVarParent' (ein Array von Objekten) nicht mit dem String-Wert überschreiben, der in die Eingabe eingegeben wurde? –
@JasonGoemaat auch nach dem Ändern des Datentyps @Input() sharedVar: Array Problem beendet, andere Vorschläge bitte ?. Vielen Dank. –
Es scheint, dass Angular eine nutbox-Eingabe * für Primitive * nicht bestätigt, wie sie einem Elternteil zugeordnet sind. '' funktioniert, da der primitive Wert ('notes: string') vom Namespace eines Objekts ausgeschlossen wird; aber 'scheint den Bezug zu den Eltern & Großeltern zu verlieren. Dies ist nicht anders als in Angular1.x, wenn Sie ein dummes Objekt verwenden mussten, nur um die Datenbindung am Leben zu erhalten. Aber wie konnten sie das in ng2 übersehen haben ??? Ich schätze, du musst den 'ControlValueAccessor' benutzen. – Cody