我有这个管道,它将输入值乘以从服务检索到的其他值:
@Pipe({ name: 'multiply' }) export class MultiplyPipe implements PipeTransform { constructor(private service: StateService) { } transform(value: any,args?: any): any { return value * this.service.multiplier; } }
用法:
{{ value | multiply }}
这样可以正常工作,但是当服务的乘法值发生变化时,它不会触发任何变化检测,因此
{{ value | multiply }}
不再运行,将旧值保留在屏幕上.有什么建议可以修复吗?
解决方法
正如
Angular documentation中所讨论的,如
this stackblitz所示,强制管道被调用的一种方法是使其不纯:
@Pipe({ name: 'multiply',pure: false })
有关纯管道和不纯管道的更多详细信息,请参见this article.