首页 > 解决方案 > 由于未及时设置变量而导致的未定义值

问题描述

我有一个问题,即没有及时设置变量。在变量之前设置了一个标题,该变量指示要显示哪些标题元素以及不显示哪些正在被实例化。这是我的代码

isDisabledCorporates(): boolean {
  if (this.userRole == 'HR Admin' || 'HR Recruiter' || 'HR Manager' || 'Candidate' || 'Operations administrator' || 'Internal Account Manager') {
    return true;
  } else {
    return false;
  }
}

  <button class="nav-link-btn" [routerLink]="['/corporate/dashboard']" *ngIf="isDisabledCorporates()"> Corporates </button>

this.userRole 存储在 localstorage 中,但没有及时设置,因此函数在返回 true 之前返回 false

我从服务中获取 userRole 值

  ngOnInit() {
    this._userService.getCurrentUserProfileData()
      .subscribe((user) => {
        this.userRole = user;
      }
    );
  }

我的问题是如何确保在放置 html 之前设置了 userRole,以便在实际角色值存在之前我不会得到 undefined

标签: angular

解决方案


首先,您的 if 语句是错误的。您需要检查每个语句:

isDisabledCorporates(): boolean {
    if (
      this.userRole == 'HR Admin' || 
      this.userRole == 'HR Recruiter' || 
      this.userRole == 'HR Manager' || 
      this.userRole == 'Candidate' || 
      this.userRole == 'Operations administrator' || 
      this.userRole =='Internal Account Manager') {
      return true;
    } else {
      return false;
    }
  }

我在 stackblitz 上创建了一个小型工作示例,看看:https ://stackblitz.com/edit/angular-f8cvor 您可以更改服务提供的 observable 的返回值以查看结果的变化。


推荐阅读