我正在学习 Angular 6,我认为我做得对,但我正面临“问题怀疑”
我有一个父母和一个孩子:
- 我的父母正在使用输入绑定向我的孩子分享信息
- 一个按钮触发更新信息的功能
- Inmediatly,父母通过@ViewChild 调用子函数
可以在这里找到Stackblitz
我的父组件看起来像:
html:
This is the parent
<child [data]="my_data"></child>
<button (click)="fireAll()">Fire All!</button>
打字稿:
export class AppComponent {
@ViewChild(ChildComponent) childComp: ChildComponent;
my_data = 'Nothing yet';
public fireAll(){
this.my_data = "I want to show this info in console";
this.childComp.writeToConsole();
//setTimeout(()=>this.childComp.writeToConsole(), 500); //This works well
}
}
孩子:
export class ChildComponent {
@Input() data: string;
writeToConsole(){
console.log(this.data);
}
}
问题是:第一次单击按钮时,我希望在控制台中看到“我想在控制台中显示此信息”,而不是收到“还没有”。但是如果我再次点击它,就会达到预期的结果。我想父级将数据传递给子级之间存在延迟,因为如果我使用 setTimeout 稍等一下,一切正常。
我的问题:
- 将数据从父母发送到孩子并在孩子中直接使用的最佳方式是什么?
- 我究竟做错了什么?
非常感谢您的帮助,谢谢