有一种情况是,我使用@Input将一个值从父组件传递给子组件。问题是,在子组件中触发ngOnInit()之前,我没有从父亲那里获得值。所以发生的情况是,当ngOnInit()试图用它的值“未定义”执行sg时,一秒钟后,值已填充,但ngOnInit()已经完成。我希望它足够清楚。
有没有办法让这两个元素同步,所以,我先获取数据,然后再填充元素?
@Input('data')
set data(value) {
this._data = value;
this.noActivityData = (this._data === null || this._data === undefined);
}
ngOnInit() {
if(this._data){
elements.activeTimeDistribution.selected = !this.noActivityData;
elements.stepsDay.selected = !this.noActivityData;
elements.walkingSpeed.selected = !this.noActivityData;
elements.activeTimeDistribution.disabled = this.noActivityData;
elements.stepsDay.disabled = this.noActivityData;
elements.walkingSpeed.disabled = this.noActivityData;
}
});
}发布于 2019-07-18 19:52:22
一种选择是将*ngIf添加到子组件中,并仅在父组件获得您想要传递的值时才呈现它
<app-child-component
*ngIf="variable_you_want_to_pass_through">
</app-child-component>您还可以使用ngOnChanges,并在这里的ngOnInit方法中运行您想要运行的任何内容,因为如果父值发生更改,就会触发该方法。
https://stackoverflow.com/questions/57093767
复制相似问题