Я делаю угловое приложение, где я использую маршрутизацию и аутентификацию.
stackblitz
компонент приложения html
<div class="container">
<div class="row">
<div class="col-xs-12 col-sm-10 col-md-8 col-sm-offset-1 col-md-offset-2">
<ul class="nav nav-tabs">
<li role="presentation" routerLinkActive="active"
[routerLinkActiveOptions]="{exact:true}"><a routerLink="/">Home</a></li>
<li role="presentation" routerLinkActive="active"><a routerLink="/servers">Servers</a></li>
<div *ngIf="showUser">
<li role="presentation" routerLinkActive="active"><a routerLink="/users">Users</a></li>
</div>
</ul>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-10 col-md-8 col-sm-offset-1 col-md-offset-2">
<router-outlet></router-outlet>
</div>
</div>
В приведенном выше коде, который я создал , если условие,
<div *ngIf="showUser">
<li role="presentation" routerLinkActive="active"><a routerLink="/users">Users</a></li>
</div>
Показать, если showUser
ложно, то он не может просматривать вкладку пользователя вдомашняя страница ..
TS :
export class AppComponent{
showUser : boolean = true;
ngOnInit() {
this.showUser = false;
}
}
Здесь я жестко закодировал this.showUser
как ложное, тогда как в реальном приложении оно будет основано на некотором условиикак,
ngOnInit() {
let user = this.localStorage.getItem('user');
if(user.value == null || user.value == undefined) {
this.showUser = false;
}
}
Таким образом, условие ложно, и, следовательно, пользовательское меню не отображается в виде ..
Но если я изменяю URL, как
https://routing-angular-bjbjqd.stackblitz.io/users
Смотри внимательно, я добавил пользователей в последний раз .. Выше перенаправление на страницу пользователей ..
Мое требование - это не должно происходить.
Потому что, если условие не выполняется, оно не должно перенаправляться на страницу пользователей.
Как предотвратить изменение URL-адреса, если showUser
не является истинным?