【发布时间】:2020-03-30 02:33:51
【问题描述】:
我有一个组件正在监视可观察的返回对象的变化以进行完整的子重新渲染
所以我有类似下面的东西
<ng-container *ngIf="someobject | async">
<child [someobject]="someobject">
</ng-container>
我没有问题将值更改渲染到子级,但是*ngIf 只有在值从 true 切换到 false 时才重新渲染子级,有没有办法在某些对象值更改时强制重新渲染。因为我试图避免 ngOnChanges 对于使用 onPush 更改检测的愚蠢组件的逻辑
更新——
我正在寻找一个完全重新渲染/重新创建,即 destory->create child here on 输入变化
stackbliz 演示 stackblitz.com/edit/angular-tfxc6f
【问题讨论】:
-
为什么需要重新渲染整个组件?将
ngIf与异步管道一起使用与普通管道相同,但具有可观察值,仅当对象为 false、未定义、null 等时才会为 false。 -
如果某个对象从一个真实值更改为另一个真实值并且这不是我想要的,它不会重新渲染
-
我知道,我只是问你为什么需要重新渲染完整的组件,并告诉你这是不可能的,因为通常当你需要重新渲染完整的对象时糟糕的设计问题。
-
更新了我的问题以澄清
-
无论如何我不明白为什么你需要销毁一个重新创建组件,你有一个可观察的作为输入参数,虽然你使用
onPush,但它会更新,这就是这样做的方法,可观察的。