Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 使用Ngrx检查后的表达式更改_Angular_Redux_Rxjs_Ngrx - Fatal编程技术网

Angular 使用Ngrx检查后的表达式更改

Angular 使用Ngrx检查后的表达式更改,angular,redux,rxjs,ngrx,Angular,Redux,Rxjs,Ngrx,我知道这可能会遇到好几次,但我找不到一个干净有效的方法来解决它。 我有一段这样的代码 当我跑的时候,我得到了这个 错误:ExpressionChangedTerrithasBeenCheckedError:表达式在检查后已更改。上一个值:“ngIf:[对象]”。当前值:“ngIf:admin” 在my component.ts中 userUsername$=this.store.pipeSelectedUserName 有没有比设置超时更有效的方法来解决这个问题 谢谢, 更新 按要求提供整个组件

我知道这可能会遇到好几次,但我找不到一个干净有效的方法来解决它。 我有一段这样的代码 当我跑的时候,我得到了这个

错误: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();