提问人:Ole 提问时间:11/15/2023 最后编辑:Ole 更新时间:11/15/2023 访问量:48
包含布尔条件的 Angular 模板在状态更改时不更新?
Angular template containing boolean condition not updating on state change?
问:
我正在尝试在单击饼图切片时更新模板。
这是模板。
<h1>{{slice && slice.name}}</h1>
<h1>{{slice && slice.value}}</h1>
这是一个演示。https://stackblitz.com/edit/stackblitz-starters-p8bxjx?file=src%2Fmain.ts,src%2Fecharts.component.ts
单击其中一个饼图段时,它会发出一个对象,其中包含所单击段的 和。name
value
该组件通过侦听器接收此消息,并在组件上设置属性,如下所示:main
onPieSelect
slice
main
onPieSelect(e: any) {
console.log('slice clicked', e);
this.slice = e;
}
我们可以看到对象是通过日志接收的,但是模板没有更新。
有什么想法吗?
答:
1赞
Andrei
11/15/2023
#1
echarts 在 Angular 之外生成事件,因此 char 事件不会触发更改检测。
要解决此问题,请将处理程序包装到 ngzone 中运行
ngZone = inject(NgZone);
...
onChartInit(echarts: any) {
let self = this;
this.echartsIntance = echarts;
this.echartsIntance.on('click', (event: any) => {
this.ngZone.run(() => {
// Print name in console
console.log('Event Name', event.name);
console.log('Event Value', event.value);
console.log('Event Value', event.color.colorStops[0].color);
const pieData: any = { name: event.name, value: event.value };
self.onPieSliceSelect.emit(pieData);
})
});
}
评论
1赞
Andrei
11/15/2023
还可以在模板上使用事件处理程序。这样 angular 包装器 ngx-echarts 将为您处理 ngZone(charClick)
评论