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条件)。
答案 0 :(得分:1)
重要的是要知道哪些架构经常变化,例如。用户,公司或项目...
如果架构没有经常更改,您可以将其嵌入其父架构中,但嵌入数据太难以操作,否则您可以将其ID嵌入新字段中。
如果您的UserSchema经常更改,则可以使用child referencing。
const CompanySchema = mongoose.Schema({
name: {
type: String
},
....
userIds: [1, 2, 3]
})
如果您的CompanySchema经常更改,请parent referencing。
const UserSchema = mongoose.Schema({
name: {
type: String
},
....
companyId: 1
})
在这一个中,companyId可以是null
。
我希望这会有所帮助。