(раствор для угловых 2, для углового 4, использование нг-If/Else)
Предполагая, что ссылки отображаются на главной странице app.component, выполните следующие действия в app.component.ts. Это успешно отображает ссылку Выход, если пользователь авторизован, иначе отображает ссылку Войти (из-за привязки с наблюдаемом, а не статическое поле)
public isUserLoggedIn: boolean = false;
ngOnInit(): void {
// Setup a subscription so our variable will know the latest status of login
this._authService.isLoggedIn().subscribe(status => this.isUserLoggedIn = status);
}
В HTML, используйте этот
<div>
<table *ngIf="isUserLoggedIn">
<tr>
<td>
<a href="#" (click)="logoutClicked($event)" id="logout"><span class="glyphicon glyphicon-log-out" aria-hidden="true"></span> Logout</a><br
/></td>
</tr>
</table>
<table *ngIf="! isUserLoggedIn">
<tr>
<td>
<a [routerLink]="['/login']" id="login"><span class="glyphicon glyphicon-log-in" aria-hidden="true"></span>Login</a><br
/></td>
</tr>
</table>
</div>
Событие logoutClicked будет вызывать метод выхода из системы authService
Чтобы избежать двойного использования одного и того же метода дважды, ngSwitch - лучший выбор, но как-то не в состоянии заставить его работать, хотя будет выглядеть так:
<div [ngSwitch]="IsUserLoggedIn()">
<a href="#" (click)="logoutClicked($event)" id="logout" *ngSwitchCase="true">
<span class="glyphicon glyphicon-log-out" aria-hidden="true"></span> Logout</a><br />
<a [routerLink]="['/login']" id="login" *ngSwitchCase="false">
<span class="glyphicon glyphicon-log-in" aria-hidden="true"></span>Login</a>
</div>
Почему бы просто не сделать это p-тегом или чем-то еще, и поместить событие click, которое вызывает метод службы? Если вам нужно, чтобы он выглядел как ссылка, вы всегда можете ее стилизовать;) – Alex
Метод щелчка вызывает обновление страницы. Знаете ли вы, как этого избежать? – leo
Показать код, связанный с этим, и давайте посмотрим :) – Alex