我有这个管道,它将输入值乘以从服务检索到的另一个值:

@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 documentationthis stackblitz所示,强制调用管道的一种方法是使其不纯:

@Pipe({
  name: 'multiply',
  pure: false
})

有关纯净管道和不纯净管道的更多详细信息,请参见this article

10-06 11:34