私は角2を使用してアプリケーションを構築していますが、この問題が発生しました。 AJAX呼び出しを実行するとき、我々は通常、このような方法でそれらを呼び出す:*ngIf="showForm"
を設定することにより:角度:ラムダでのコード実行はテンプレートに影響しません
http.post(this.baseUrl + url, data, { headers: headers}).subscribe(
result => {
this.showForm = false;
},
error => {
this.showForm = true;
}
);
showForm
はすなわち、フォームを削除/追加する示しComponent
の財産です。そのコードを実行すると、ajax呼び出しが成功するとフォームがDOMから削除され、呼び出しが失敗した場合はフォームが保持されます。これは正しい動作です。
FacebookログインAPIを実行すると、少し違っています。私はそのコードを実行するときのResponse.Statusが'conencted'
ある(ユーザが既にFacebookにログインして、すでにアプリケーションにログインした状態で、
FB.getLoginStatus(response => {
if (response.status === 'connected') {
this.showForm = false;
}
else {
this.showForm = true;
}
});
:チュートリアルは、前記の通り、コードは次のようでなければなりません)、コードは応答λ内にthis.showForm = false;
を実行します。以前の動作に続いて、DOMからフォームを削除する必要があります。Chromeでデバッグしようとしましたが、this.showForm = true;
が実際に実行されました。
問題は、そのコード行は実行されましたが、フォームは削除されませんでした。この正確なコードを2回または3回実行する場合にのみ、フォームは最終的に値の変更を認識し、それに応じてビューを調整します。これにより、ユーザが実際にサインインする前に、フェイスブックログインボタン(FB.getLoginStatus()
と呼ぶ)を2回または3回クリックする必要があります。
これに修正はありますか?または、FB.getLoginStatus()
を使用する私のやり方が間違っていましたか?私はここでいくつかの啓発が必要です。
EDIT: はのResponse.Statusが'conencted'
ある場合、コードではなく、私が以前に書いたthis.showForm = true;
の、this.showForm = false;
を実行されます間違って実行されるコードを、修正。
実際には接続されています。デバッガは 'if'ブロックを踏んだ。問題は、私が検出した接続が接続されているかどうかではありません。フラグが反転されていても、ビューはリフレッシュされませんでした。これは@Adam Szmydが答えたものです。 – Kurotsuki