我想要更新子进程的@Input属性,并使更改对父进行生效 .
家长TS(文件详情):
export class DocumentDetailsComponent implements OnInit {
view: string = 'editor';
}
父HTML(文档详细信息):
<document-content [(view)]="view" ></document-content>
儿童TS(文件内容):
export class DocumentContentComponent implements OnInit, OnChanges {
@Input() view: string;
ngOnChanges(changes: SimpleChanges) {
if (changes.version) {
this.view = 'editor';
}
}
}
当子组件内的视图属性设置为“编辑器”时,它似乎不会反映父组件内的这些更改 .
我知道我可以使用@Ouput事件 Launcher ,但我觉得这应该可以正常工作 .
1 回答
当angular bootstraps它构建一个组件树 .
组件具有输入和输出属性,可以在组件装饰器中定义或使用属性装饰器定义 .
数据通过
@input
属性(Parent to child)流入组件 . 数据通过@output
(子级到父级)属性从组件流出 .使用
@input
属性数据沿树向下流动 . 它不会向上流动 .如果您希望数据流向相反方向,即向上,您需要使用
@Output
装饰器和事件 Launcher .