Angular NGRX过滤器导致表达式更改终端检查错误
我在选择器上使用NGRX过滤器,根据过滤器的状态值过滤列表中的项目。。当页面第一次加载时,没有问题。如果我刷新页面,我会得到一个Angular NGRX过滤器导致表达式更改终端检查错误,angular,ngrx,Angular,Ngrx,我在选择器上使用NGRX过滤器,根据过滤器的状态值过滤列表中的项目。。当页面第一次加载时,没有问题。如果我刷新页面,我会得到一个表达式ChangedTerithasBeenCheckedError错误。如果我删除/注释过滤器部分,错误就会消失。有没有办法在不引起此错误的情况下进行选择器筛选 export const getRatings = (state: MyState) => state.ratings .filter(rating => state.fi
表达式ChangedTerithasBeenCheckedError
错误。如果我删除/注释过滤器部分,错误就会消失。有没有办法在不引起此错误的情况下进行选择器筛选
export const getRatings = (state: MyState) => state.ratings
.filter(rating =>
state.filterByText === '' ||
rating.name.toLowerCase().includes(state.filterByText.toLowerCase())
);
在组件中使用
ngOnInit() {
this.ratings$ = this.store.select(myState.getRatings);
}
在html中使用
<sb-rating-cards [ratings]="ratings$ | async"></sb-rating-cards>
借助RxJs,您可以随心所欲地变换Observable(冷、热、回放等)。若输入可观测发射,则会触发变化检测,所以我认为角度分量的设计目的是将可观测作为输入,而不是实时流 这是一个(如果你可以这么说的话) 有人建议添加一个
管道(延迟(0))
,这可能是解决它的一种快速方法(但在现实生活中,如果它需要一些时间来构建,它可能会给您带来问题,因为delay(0)
类似于setTimeout
——它在async
调度器上运行,该调度器在宏任务队列中运行(就像setTimeout
)
否则,按原样传递Observable并在子组件中订阅,在子组件中还可以管理销毁时的取消订阅