首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带Ngrx的ExpressionChangedAfterItHasBeenCheckedError

带Ngrx的ExpressionChangedAfterItHasBeenCheckedError
EN

Stack Overflow用户
提问于 2019-10-15 16:30:28
回答 1查看 1.3K关注 0票数 2

我知道这可能会遇到好几次,但我找不到一个干净有效的方法来解决它。我有一段类似于这个<div *ngIf="userUsername$ | async as username"></div>的代码,当我运行时,我得到了这样的代码

错误: ExpressionChangedAfterItHasBeenCheckedError:表达式检查后发生了更改。以前的值:'ngIf: object对象‘。当前值:'ngIf: admin‘。

在我的component.ts userUsername$ = this.store.pipe(select(selectSelectedUsername));

有什么有效的方法来解决这个问题而不是setTimeout

谢谢,

更新

按要求编写整个组件的代码

代码语言:javascript
复制
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() { }

}
EN

回答 1

Stack Overflow用户

发布于 2019-10-16 04:01:32

如果您想解决这个错误,那么您可以使用这个

代码语言:javascript
复制
import {ChangeDetectorRef } from '@angular/core';

  constructor(
    title: Title,
    private cdr: ChangeDetectorRef){ }


 this.cdr.detectChanges();

注释:*在变量值更改为使用此行之后

代码语言:javascript
复制
this.cdr.detectChanges();
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58399073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档