Я использую директиву Angular *ngIf
, чтобы проверить, вошел ли пользователь в данный момент. В зависимости от статуса аутентификации пользователя (я использую аутентификацию Firebase), должна отображаться либо кнопка входа, либо пользовательское меню.Вот код:
.html
<div class="right-side">
<!-- Header Widget -->
<div class="header-widget">
<!-- User Menu -->
<div class="user-menu" *ngIf="afAuth.authState | async as user; else showLogin">
<div class="user-name"><span><img src="assets/images/agent-03.jpg" alt=""></span>Hi, {{ ... }}!</div>
<ul>
<li><a routerLink="my/profile"><i class="sl sl-icon-user"></i> My Profile</a></li>
<li><a routerLink="my/bookmarks"><i class="sl sl-icon-star"></i> Bookmarks</a></li>
<li><a routerLink="my/properties"><i class="sl sl-icon-docs"></i> My Properties</a></li>
<li (click)="logOut()"><a routerLink="/"><i class="sl sl-icon-power"></i> Log Out</a></li>
</ul>
</div>
<ng-template #showLogin>
<a routerLink="/login-register" class="sign-in"><i class="fa fa-user"></i> Log In / Register</a>
</ng-template>
<a routerLink="/submit-property" class="button border">Submit Property</a>
</div>
<!-- Header Widget / End -->
</div>
.ts
import { AngularFireAuth } from 'angularfire2/auth';
// ...
@Component({
// ...
})
export class AppComponent {
constructor(public afAuth: AngularFireAuth) {
}
При нажатии в меню пользователядолжен появиться всплывающее окно и отобразить список ссылок.Тем не менее, он не реагирует на нажатия. Это шаблон, который я использую .Вот код .css
для ul меню:
.css
.user-menu ul {
float: left;
text-align: left;
position: absolute;
top: 45px;
right: 0;
list-style: none;
background-color: #fff;
box-shadow: 0px 0px 10px 0px rgba(0,0,0,0.12);
border-radius: 4px;
display: inline-block;
width: 190px;
font-size: 15px;
transform: translate3d(0,15px,0);
padding: 16px 8px;
box-sizing: border-box;
transition: 0.25s;
visibility: hidden;
opacity: 0;
z-index: 110;
}
Если я заменю код в директиве *ngIf
следующим образом <div class="user-menu" *ngIf="1==1; else showLogin">
, DOM реагирует:
Но когда я отслеживаю состояние аутентификации пользователя *ngIf="afAuth.authState | async as user; else showLogin"
, оно не отвечает.
Как это можно решить?