ngOnInit 比@Input 快
ngOnInit is faster than @Input
我有一种情况,我正在使用@Input 将值从父组件传递到子组件。问题是在子组件中触发 ngOnInit() 之前我没有从父亲那里得到值。所以发生的事情是,当 ngOnInit() 尝试使用其 "undefined" 的值执行 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;
}
});
}
一个选择是将 *ngIf 添加到您的子组件,并且仅在父组件获得您要传递的值后才呈现它
<app-child-component
*ngIf="variable_you_want_to_pass_through">
</app-child-component>
您还可以在此处的 ngOnInit 方法中使用 ngOnChanges 和 运行 任何您想 运行 的方法,因为如果父值更改,这将触发。
我有一种情况,我正在使用@Input 将值从父组件传递到子组件。问题是在子组件中触发 ngOnInit() 之前我没有从父亲那里得到值。所以发生的事情是,当 ngOnInit() 尝试使用其 "undefined" 的值执行 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;
}
});
}
一个选择是将 *ngIf 添加到您的子组件,并且仅在父组件获得您要传递的值后才呈现它
<app-child-component
*ngIf="variable_you_want_to_pass_through">
</app-child-component>
您还可以在此处的 ngOnInit 方法中使用 ngOnChanges 和 运行 任何您想 运行 的方法,因为如果父值更改,这将触发。