Angular 2-在多个条件下使用 *ngIf

标签 angular angular-ng-if

我无法在我的导航栏上有选择地显示链接。 根据登录者(用户或管理员),我想更改导航栏上显示的链接。

以下是用户/管理员注销的此类实例的代码。

在 navbar.component.html -

<li *ngIf="authService.userLoggedIn()== true && authService.adminLoggedIn() == false" 
       [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}"> 
  <a (click)="onUserLogoutClick()" href="#">Logout</a>
</li>

<li *ngIf="(authService.adminLoggedIn() == true) && (authService.userLoggedIn() == false)" 
      [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}">
   <a (click)="onAdminLogoutClick()" href="#">Logout</a>
</li>

authService.adminLoggedIn()authService.userLoggedIn() 都返回 tokenNotExpired;

下面是navbar.component.ts-

中的相关代码
 onUserLogoutClick() {
   this.authService.userLogout();
   this.flashMessage.show('You are now logged out', {cssClass: 'alert-success', timeout: 3000});
   this.router.navigate(['/login']);
   return false;   
 }

 onAdminLogoutClick() {
   this.authService.adminLogout();
   this.flashMessage.show('Administrator now logged out', {cssClass: 'alert-success', timeout: 3000});
   this.router.navigate(['/admin']);
   return false;   
 }

authService.adminLogout()authService.userLogout() 只是清除存储在本地存储中的 token 。

如果我犯的错误很愚蠢,我提前道歉。我是 Angular 的新手。

最佳答案

您可以将这些多行条件和复杂条件移动到您的组件方法中,如下所示

showLogout(){
    if(this.authService.userLoggedIn()== true && this.authService.adminLoggedIn() == false)
        return true;
    else
        return false;
}

另外,由于 angular4*ngIf 和 else,你可以将它用作

 <div *ngIf="showLogout();then userLogout else adminlogout"></div>

<ng-template #userLogout><a (click)="onUserLogoutClick()" href="#">Logout</a></li></ng-template>
<ng-template #adminlogout><a (click)="onAdminLogoutClick()" href="#">Logout</a></li></ng-template>

关于Angular 2-在多个条件下使用 *ngIf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43021972/

相关文章:

html - 如何更改标签的字体粗细

javascript - 将 Wheelnav.js 导入 Angular 2/4

node.js - 在 Angular2 中导入模块

angular - 如何为 [routerLink] 提供与数组值相对应的动态值?

javascript - Angular 9 onclick 功能未定义

angular - 从 Angular 2 中的 FileReader 获取值

javascript - 当 ng-if 为 false 时执行里面的代码

javascript - 如何在 AngularJS ng-if 语句中使用 ">"比较器

html - *ngIf else if 在模板中

javascript - 使用 Angular 6 中的 ngFor 循环动态创建输入元素数组并添加基于模板引用变量的动态验证