我有这个管道,它将输入值乘以从服务检索到的另一个值:
@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 }}
DEMO
这可以正常工作,但是当服务中的
multiply
值更改时,它不会触发任何更改检测,因此 {{ value | multiply }}
不会再次运行,将旧值保留在屏幕上。有什么建议可以解决吗?
最佳答案
如Angular documentation和this stackblitz所示,强制调用管道的一种方法是使其不纯:
@Pipe({
name: 'multiply',
pure: false
})
有关纯净管道和不纯净管道的更多详细信息,请参见this article。