Javascript 调用函数并将其传递给*ngIf(第6章)
我是新手。 目前,应用程序的登录功能正在运行。当用户登录时,它将用户数据存储在本地存储器中。 我有一个导航栏,它有两个li元素:登录和注销。 当用户登录时,我希望显示注销链接,但当用户注销时,注销链接应消失,并显示登录链接 在我的navbar.component.ts文件中,我有一个函数,我在其中检查localstorage是否包含任何值,然后该函数应返回false,注销链接不应再可见,并且当用户未登录时,只应显示登录链接 这是我的navbar.component.ts代码:Javascript 调用函数并将其传递给*ngIf(第6章),javascript,angular,typescript,angular-ng-if,Javascript,Angular,Typescript,Angular Ng If,我是新手。 目前,应用程序的登录功能正在运行。当用户登录时,它将用户数据存储在本地存储器中。 我有一个导航栏,它有两个li元素:登录和注销。 当用户登录时,我希望显示注销链接,但当用户注销时,注销链接应消失,并显示登录链接 在我的navbar.component.ts文件中,我有一个函数,我在其中检查localstorage是否包含任何值,然后该函数应返回false,注销链接不应再可见,并且当用户未登录时,只应显示登录链接 这是我的navbar.component.ts代码: authenti
authenticate: boolean = false;
token: any;
checkStorage(){
this.token = localStorage.getItem('user')
if(this.token === null){
this.authenticate = false;
return this.authenticate;
} else {
this.authenticate = true;
return this.authenticate;
}
}
下面是navabar.component.html:
<ul class="navbar-nav">
<li *ngIf="authenticate" class="nav-item">
<a class="nav-link" href="#" routerLinkActive="active" routerLink="/login">Login</a>
</li>
<li *ngIf="authenticate"class="nav-item">
<a class="nav-link" href="#" (click)="onLogout()">Logout</a>
</li>
</ul>
-
-
任何帮助都将不胜感激。谢谢
编辑:我尝试在登录时使用*ngIf=“!authenticate”,但它不起作用。这只是在导航栏上显示登录链接,但一旦我登录,登录链接仍然存在,并且注销链接永远不会显示。您可以在组件构造函数中调用
checkStorage
函数。然后,您可以轻松地将*ngIf
与您的身份验证
属性一起使用:
<ul class="navbar-nav">
<li *ngIf="!authenticate" class="nav-item">
<a class="nav-link" href="#" routerLinkActive="active" routerLink="/login">Login</a>
</li>
<li *ngIf="authenticate"class="nav-item">
<a class="nav-link" href="#" (click)="onLogout()">Logout</a>
</li>
</ul>
-
-
您可以在组件构造函数中调用checkStorage
函数。然后,您可以轻松地将*ngIf
与您的身份验证
属性一起使用:
<ul class="navbar-nav">
<li *ngIf="!authenticate" class="nav-item">
<a class="nav-link" href="#" routerLinkActive="active" routerLink="/login">Login</a>
</li>
<li *ngIf="authenticate"class="nav-item">
<a class="nav-link" href="#" (click)="onLogout()">Logout</a>
</li>
</ul>
-
-
成功登录后do=>this.authenticate=true;
如果登录失败=>this.authenticate=false
如果在ngOnInit()或constructor()中调用checkStorage()方法,则在初始化组件时只调用一次。因此,当用户尝试登录时,您必须执行上述两项操作
(调用login()方法时)
您的checkStorage()应该是
checkStorage(){
this.token = localStorage.getItem('user')
if(this.token === null){
this.authenticate = false;
} else {
this.authenticate = true;
}
}
<ul class="navbar-nav">
<li *ngIf="!authenticate" class="nav-item">
<a class="nav-link" href="#" routerLinkActive="active" routerLink="/login">Login</a>
</li>
<li *ngIf="authenticate"class="nav-item">
<a class="nav-link" href="#" (click)="onLogout()">Logout</a>
</li>
</ul>
不需要归还任何东西。html代码应该是
checkStorage(){
this.token = localStorage.getItem('user')
if(this.token === null){
this.authenticate = false;
} else {
this.authenticate = true;
}
}
<ul class="navbar-nav">
<li *ngIf="!authenticate" class="nav-item">
<a class="nav-link" href="#" routerLinkActive="active" routerLink="/login">Login</a>
</li>
<li *ngIf="authenticate"class="nav-item">
<a class="nav-link" href="#" (click)="onLogout()">Logout</a>
</li>
</ul>
-
-
成功登录后do=>this.authenticate=true;
如果登录失败=>this.authenticate=false
如果在ngOnInit()或constructor()中调用checkStorage()方法,则在初始化组件时只调用一次。因此,当用户尝试登录时,您必须执行上述两项操作
(调用login()方法时)
您的checkStorage()应该是
checkStorage(){
this.token = localStorage.getItem('user')
if(this.token === null){
this.authenticate = false;
} else {
this.authenticate = true;
}
}
<ul class="navbar-nav">
<li *ngIf="!authenticate" class="nav-item">
<a class="nav-link" href="#" routerLinkActive="active" routerLink="/login">Login</a>
</li>
<li *ngIf="authenticate"class="nav-item">
<a class="nav-link" href="#" (click)="onLogout()">Logout</a>
</li>
</ul>
不需要归还任何东西。html代码应该是
checkStorage(){
this.token = localStorage.getItem('user')
if(this.token === null){
this.authenticate = false;
} else {
this.authenticate = true;
}
}
<ul class="navbar-nav">
<li *ngIf="!authenticate" class="nav-item">
<a class="nav-link" href="#" routerLinkActive="active" routerLink="/login">Login</a>
</li>
<li *ngIf="authenticate"class="nav-item">
<a class="nav-link" href="#" (click)="onLogout()">Logout</a>
</li>
</ul>
-
-
对于两种不同的情况,您有相同的检查。当用户loggedIn和loggedOut调用checkStorage方法时,您可能忘记了一个“not”(!
)来更新authenticate变量。其余部分自动工作。显示时使用*ngIf=“!authenticate”login@PratapA.K在登录时添加ngIf=“!authenticate”会隐藏注销链接。但是,当我尝试登录时,登录链接仍保留在那里,而注销链接从未显示。请告诉我您在哪里调用函数checkstorage()?对于两种不同的情况,您有相同的检查。当用户loggedIn和loggedOut调用checkStorage方法时,您可能忘记了一个“not”(!
)来更新authenticate变量。其余部分自动工作。显示时使用*ngIf=“!authenticate”login@PratapA.K在登录时添加ngIf=“!authenticate”会隐藏注销链接。但是,当我尝试登录时,登录链接仍然存在,而注销链接从未显示。您能告诉我您在哪里调用函数checkstorage()?