ngIf标志在ngOnInit中的值更改时不更新span元素

问题描述 投票:0回答:1

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

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

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并未更改。登录后,登录Flash消息仍正确显示。

有人可以帮我吗?

angular angular8
1个回答
0
投票

您需要添加变更检测。

添加

private changeDetect: ChangeDetectorRef

在构造函数中。

添加

this.changeDetect.detectChanges();

更新标志后。

© www.soinside.com 2019 - 2024. All rights reserved.