【发布时间】:2018-07-04 18:00:47
【问题描述】:
Angular2-JWT 具有我需要使用的特定功能,以便根据存储在 localStorage 中的记录的用户令牌显示/隐藏链接。
tokenNotExpired();
我一直在寻找替代方法来实现显示导航链接 IF 令牌在 localStorage 中但似乎不起作用的条件语句。
import { Injectable } from '@angular/core';
import {Http, Headers} from '@angular/http';
import 'rxjs/add/operator/map'
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { HttpClientModule } from '@angular/common/http';
import { CanActivate} from '@angular/router';
import {FlashMessagesModule} from 'angular2-flash-messages';
import { JwtModule } from '@auth0/angular-jwt';
@Injectable()
export class AuthService{
authToken:null;
user:any;
isLoggedin: boolean = false;
constructor(private http:Http) { }
isLoggedIn() {
if (localStorage.getItem("id_token") == null) {
this.isLoggedin = false;
console.log(this.isLoggedIn);
return this.isLoggedin;
}
else {
console.log(this.isLoggedIn);
return true;
}
}
我似乎不明白为什么它不能正常工作。 也许我错过了什么。
<ul class="nav-l" NgClass="{'invisible':isLoggedIn()===true}">
<li class="nav-link" NgIf="isLoggedIn()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}"><a [routerLink]="'/home'">Home</a></li>
<li class="nav-link" NgIf="isLoggedIn()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}"><a [routerLink]="'/about'">About</a></li>
<li class="nav-link" NgIf="isLoggedIn()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}"><a [routerLink]="'/feature'">Features</a></li>
<li class="nav-link" NgIf="isLoggedIn()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}"><a [routerLink]="'/contact'">Contact</a></li>
在上面的 HTML 中,我尝试了两种不同的隐藏方法(NgClass 条件和 NgIf 条件)。
【问题讨论】:
-
不应该有 *ngIf 而不是 NgIf 吗? NgClass 似乎也错了
-
我也是这么想的,但我正在改变它们并交替使用它们,因为无论哪种方式它都不适合我,因为我提出了一个条件
-
导航栏组件是问题所在,isLoggedIn() 在 auth.service 中,无论出于何种原因,它都不会传递给导航栏,所以我将函数移到了 navbar.component.ts 和现在可以了!!无论如何感谢您的建议:)
标签: angularjs json jwt angular5 auth0