Angular 使用Ngrx检查后的表达式更改
我知道这可能会遇到好几次,但我找不到一个干净有效的方法来解决它。 我有一段这样的代码 当我跑的时候,我得到了这个 错误:ExpressionChangedTerrithasBeenCheckedError:表达式在检查后已更改。上一个值:“ngIf:[对象]”。当前值:“ngIf:admin” 在my component.ts中 userUsername$=this.store.pipeSelectedUserName 有没有比设置超时更有效的方法来解决这个问题 谢谢, 更新 按要求提供整个组件的代码Angular 使用Ngrx检查后的表达式更改,angular,redux,rxjs,ngrx,Angular,Redux,Rxjs,Ngrx,我知道这可能会遇到好几次,但我找不到一个干净有效的方法来解决它。 我有一段这样的代码 当我跑的时候,我得到了这个 错误:ExpressionChangedTerrithasBeenCheckedError:表达式在检查后已更改。上一个值:“ngIf:[对象]”。当前值:“ngIf:admin” 在my component.ts中 userUsername$=this.store.pipeSelectedUserName 有没有比设置超时更有效的方法来解决这个问题 谢谢, 更新 按要求提供整个组件
import { Component, OnInit, ChangeDetectorRef, ChangeDetectionStrategy, OnDestroy } from '@angular/core';
import { select, Store } from '@ngrx/store';
import { selectSelectedUsername } from '../state-management/selectors/user.selector';
import { IAppState } from '../state-management/state/app.state';
@Component({
selector: 'my-layout',
templateUrl: './layout.component.html',
styleUrls: ['./layout.component.sass']
})
export class LayoutComponent implements OnInit, OnDestroy {
userUsername$ = this.store.pipe(select(selectSelectedUsername));
constructor(
private store: Store<IAppState>
) {
}
ngOnInit() { }
ngOnDestroy() { }
}
如果要解决此错误,则可以使用此
注:***在您的变量值更改为使用此行后
你能展示你的整个组件吗?在你理解错误和单向数据流之前,不要试图用setTimeout甚至ChangeDetectorRef之类的东西来破解错误。@MikeOne根据你的要求,我用完整的代码更新了我的问题,它除了注册到商店之外什么都不做,谢谢u@MikeOne ,我认为主要的问题是我从一个子组件发送操作,但我不知道应该在其他任何地方发送它from@MikeOne只是为了记录在案,我改变了我的结构和我发布动作的地点,虽然我仍然找不到解决主要问题的方法,但它还是起了作用
import {ChangeDetectorRef } from '@angular/core';
constructor(
title: Title,
private cdr: ChangeDetectorRef){ }
this.cdr.detectChanges();
this.cdr.detectChanges();