首页 > 解决方案 > 当 ngOnInit 中的值更改时,ngIf 标志不更新 span 元素

问题描述

如果用户已成功创建帖子,我将显示一条消息。我在创建帖子后发出一个值,并在重定向组件的 ngOnInit 中捕获该值,以更改我用来显示 Flash 消息的标志。

我在同一个组件中还有另一条闪存消息,它将在用户成功登录后显示,并且工作正常。

ngOnInit() {

    this.userSub=this.userService.loginStatusChanged.subscribe(
      (data:{loginFlag:boolean, userId:string, userName:string})=>{

        this.user = data.userName;
        if(data.loginFlag){

          if(this.previousRouteService.getPreviousUrl()=='/log-in'){
            this.loginFlashMessageFlag=true;
            setTimeout(()=>{
              this.loginFlashMessageFlag=false;
            },5000)
          }
        }

        this.kavithaiService.kavithaiStatusChanged.subscribe(
          (data:any)=>{
            console.log(data);
            this.createPostFlashMessageFlag = true;
            setTimeout(()=>{
              this.createPostFlashMessageFlag=false;
            },5000)

          }
        )

      }
    )
  }

HTML:

<span id="loginFlashMessage"  @flashMessageAnimation *ngIf="loginFlashMessageFlag">வணக்கம், {{user}} !</span>

<span id="createPostFlashMessage"  @flashMessageAnimation *ngIf="createPostFlashMessageFlag" >Flash Message</span>

kavithai 服务订阅中的 console.log(data) 显示正确,但 dom 没有改变。不过,登录闪现消息在登录后正确显示。

有人可以帮我吗?

标签: angularangular8

解决方案


You need to add change detection.

Add

private changeDetect: ChangeDetectorRef

in constructor.

Add

this.changeDetect.detectChanges();

after you update the flags.


推荐阅读