ngIfが正しく評価される正しい表現が見つからないようです。Angular2 ng DOMを更新していない場合は、
私は単純なAngularfire2 example hereに従っており、ログインして正しくログアウトすることができます。
import { Component } from '@angular/core';
import { AngularFire } from 'angularfire2';
@Component({
selector: 'app-root',
template: `
<div> {{ (af.auth | async)?.uid }} </div>
<button (click)="login()">Login</button>
<button (click)="logout()">Logout</button>
`,
})
export class AppComponent {
constructor(public af: AngularFire) {
this.af.auth.subscribe(auth => console.log(auth));
}
login() {
this.af.auth.login();
}
logout() {
this.af.auth.logout();
}
}
私は状態に応じてログインし、正しいボタンを表示/非表示するコードを変更したいです。コンソールでは、認証がヌルからオブジェクトおよびバックに切り替わっていますが、DOMは更新されていないことがわかります。
<div> {{ (af.auth | async)?.uid }} </div>
<button *ngIf="!(auth | async)" (click)="login()">Login</button>
<button *ngIf="auth | async" (click)="logout()">Logout</button>
は私が間違って何をやっている:ここで
は、最新の試みですか?これを正しく評価するにはどうすればよいですか?
を理解するためにAsyncPipeとsafe navigation operator (?.)を探すべきだと思います。ブーリアン変数をクラス内で作成し、サブスクライバで設定し、ngIf句で参照してボタンを非表示/表示する方がよいでしょう。 –
ブール値を返していますか? authのconsole.logは何を表していますか? – deek
@deek authはオブジェクトです。ボタンがクリックされると、ログに「null」またはプロパティを持つ有効なオブジェクトが表示されます。 –