mon*_*eki 5 angular-ng-if firebase-authentication angular
我正在使用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>
Run Code Online (Sandbox Code Playgroud)
.TS
import { AngularFireAuth } from 'angularfire2/auth';
// ...
@Component({
// ...
})
export class AppComponent {
constructor(public afAuth: AngularFireAuth) {
}
Run Code Online (Sandbox Code Playgroud)
单击时,将弹出用户菜单并显示链接列表.但是,点击后它没有响应.这是我正在使用的模板.这是.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;
}
Run Code Online (Sandbox Code Playgroud)
如果我*ngIf像这样替换指令中的代码<div class="user-menu" *ngIf="1==1; else showLogin">,那么DOM就会响应:
但是当我监视用户的身份验证状态时*ngIf="afAuth.authState | async as user; else showLogin",它仍然没有响应.
怎么解决这个问题?
将此行添加到类中
user$: Observable<firebase.user>;
constructor(private afAuth: AngularFireAuth){
this.user$ = afAuth.authState
}
Run Code Online (Sandbox Code Playgroud)
HTML里面写
<div *ngIf="user$ | async as user; else showLogin">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
344 次 |
| 最近记录: |