angular onpush 组件仅通过模板内的异步管道重新呈现

angular onpush component rerenders only with async pipe inside template

我的组件具有 ChangeDetectionStrategy.OnPush 策略。

我通过 async 管道从父级传递数据,当该数据更改组件拒绝重新呈现时。

当我在父级传递 obvservable 而不是使用 async 管道并在子模板内部使用 async 管道时,重新渲染被正确调用。

有人知道为什么会这样吗 (angular v9)? 我想这与 zone.js 触发变化检测有关,但为什么在哪里如何?我不知道:(

这就是为什么

https://github.com/angular/angular/blob/master/packages/common/src/pipes/async_pipe.ts#L146

使用异步管道重新呈现视图。