gpt4 book ai didi

Angular ngIf firebase 身份验证指令使 DOM 无响应

转载 作者:太空狗 更新时间:2023-10-29 17:40:19 24 4
gpt4 key购买 nike

我正在使用 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) {
}

单击时,应弹出用户菜单并显示链接列表。但是,它在单击时无响应。 This is the template I'm using .这是 .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" , 它保持无响应。

如何解决?

最佳答案

将这一行添加到类中

user$: Observable<firebase.user>;
constructor(private afAuth: AngularFireAuth){
this.user$ = afAuth.authState
}

在HTML里面写

<div *ngIf="user$ | async as user; else showLogin">

关于Angular ngIf firebase 身份验证指令使 DOM 无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50308881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com