Ich muss einige Daten in Kindelement übertragen und Funktion darin ausführen. Ich verwende ViewChild
für den Zugriff auf die Funktion. Aber in Kind childParam
immer noch undefiniert.Angular2. Kann ich ViewChild und @Input gleichzeitig verwenden?
Eltern Vorlage:
<my-modal #myModal [childParam]="parentParam"></my-modal>
Geordnete Komponente:
@ViewChild('myModal') myModal;
parentParam: any;
onSubmit(value: any){
this.parentParam = value;
this.myModal.modalShow();
}
Kinder Komponente:
@Input() childParam: any;
modalShow(){
console.log(this.childParam);
}
Warum childParam
nicht definiert ist?
Was ist besser: Änderung direkt childParam
von ViewChild
:
this.myModal.childParam = 'test string';
oder senden Daten über Funktionsparameter:
this.myModal.modalShow('test string');
Ich denke, 'parentParam' laufen ist noch nicht festgelegt, wenn' modalShow() 'genannt wird, aber schwer zu sagen, weil die Der Code lässt nicht zu, was man gehen könnte. –
Ich erstelle Plunker [link] (https://plnrkr.co/edit/ZcZaJ0Wbu9CAobxkd2LJ?p=preview). Als ich zum ersten Mal auf den Button geklickt habe - habe nichts angezeigt, zweites Mal geklickt - String wurde angezeigt. – MikeS