我有一个包含复杂输入(一些图表数据)的子组件。我通过Angular 5中的@Input()装饰器从父组件发送此图表数据,获取API响应后发送。因此,每次在父组件上更改时,我需要根据API响应同步图表,因此需要使用OnChange生命周期。但不幸的是,我无法使其正常工作。我尝试使用设置具有基本数字类型的虚拟输入字段并将其增加,但徒劳无功。以下是我的实现:
子图表组件:
子图表组件:
export class ChartComponent implements OnInit, OnChanges {
@Input() chartData;
@Input() triggerChart;
ngOnChanges(changes: SimpleChanges) {
console.log(changes);
}
}
Parent component html:
<app-chart [chartData]="chartData" [triggerChart]="triggerChartData"></app-chart>
<input [(ngModel)]="triggerChartData" type="hidden">
Parent component:
this.chartService.getChartData(params).subscribe(res => {
this.chartData = res;
this.triggerChartData++;
});
PS:正如标题所示,ngOnChanges仅在组件初始化时使用未定义值时触发一次。
triggerChartData++
渲染 NaN 的情况下,尝试使用数字值初始化该属性:triggerChartData: number = 0
。然后使用++
应该可以正常工作。 - joshrathke