对于 Parent -> Child,使用 @Input
对于子 -> 父,使用 @Output
所以要同时使用:
在父组件中
打字稿:
onValueInParentComponentChanged(value: string) {
this.valueInParentComponent = value;
}
html
<child-component
(onValueInParentComponentChanged)="onValueInParentComponentChanged($event)"
[valueInParentComponent]="valueInParentComponent">
</child-component>
在子组件中
打字稿:
export class ChildComponent {
@Input() valueInParentComponent: string;
@Output() onValueInParentComponentChanged = new EventEmitter<boolean>();
}
onChange(){
this.onValueInParentComponentChanged.emit(this.valueInParentComponent);
}
html
<input type="text" [(ngModel)]="valueInParentComponent"
(ngModelChange)="onChange($event)"/>
完整示例
https://plnkr.co/edit/mc3Jqo3SDDaTueNBSkJN?p=preview
实现此目的的其他方法:
https://angular.io/docs/ts/latest/cookbook/component-communication.html