Angular 管道变化检测
Angular change detection with pipe
我对变更检测和管道有疑问。我找不到解决它的好方法。
我创建了一个小项目来重现它here。转到 /monitor 路线。
当您单击“更改”按钮时,它会更改数组中第一项的值,但 UI 不会更新。
如果我使用
在更改处理程序中重新创建另一个对象,它会起作用
this.state[0] = Object.assign({}, this.state[0], { value: 999.99 });
但我不想那样做。我需要保留相同的对象引用。
问题来自 vital-value.component.html
中的管道
{{ _vitalValue | vitalFormat }}
如果我改用就可以了
{{ _vitalValue.value }}
有没有办法在保留管道的同时进行刷新?
谢谢!
尽管不推荐这样做,但请尝试使管道变得不纯净。
@Pipe({
name: 'vitalFormat',
pure: false
})
但要注意对应用程序性能的影响。不建议使用 impure
管道。
阅读此处:
Angular executes an impure pipe during every component change detection cycle. An impure pipe is called often, as often as every keystroke or mouse-move.
With that concern in mind, implement an impure pipe with great care. An expensive, long-running pipe could destroy the user experience.
我对变更检测和管道有疑问。我找不到解决它的好方法。
我创建了一个小项目来重现它here。转到 /monitor 路线。
当您单击“更改”按钮时,它会更改数组中第一项的值,但 UI 不会更新。
如果我使用
在更改处理程序中重新创建另一个对象,它会起作用this.state[0] = Object.assign({}, this.state[0], { value: 999.99 });
但我不想那样做。我需要保留相同的对象引用。
问题来自 vital-value.component.html
中的管道{{ _vitalValue | vitalFormat }}
如果我改用就可以了
{{ _vitalValue.value }}
有没有办法在保留管道的同时进行刷新?
谢谢!
尽管不推荐这样做,但请尝试使管道变得不纯净。
@Pipe({
name: 'vitalFormat',
pure: false
})
但要注意对应用程序性能的影响。不建议使用 impure
管道。
阅读此处:
Angular executes an impure pipe during every component change detection cycle. An impure pipe is called often, as often as every keystroke or mouse-move.
With that concern in mind, implement an impure pipe with great care. An expensive, long-running pipe could destroy the user experience.