Meteor Angular 2アプリのページにng2-bootstrap ngb-alertを実装しました。 アラートをtypescriptのアラートアレイにプッシュすると、アラートはブラウザウィンドウを再度クリックした後にのみ表示されます。Meteor Angle 2アプリのアラートブラウザ内のクリック後にのみ表示
プッシュは、Accounts.createUser関数のコールバック内で実行されます。 プッシュがsignupメソッド(Accounts.createUserコールバック関数ではない)内で実行された場合、アラートは即座に表示されます。
また、ngForで非同期パイプを使用しようとしましたが、警告変数にPromiseタイプを使用しました。これで問題は解決されません。
この問題のサンプルコードの下にあります。
テンプレートHTML
...
<p *ngFor="let alert of alerts">
<ngb-alert [type]="alert.severity">{{ alert.detail }}</ngb-alert>
</p>
...
<button type="button" (click)="signup()">Signup</button>
...
コンポーネントクラス
...
alerts: IAlert[];
...
signup(): void {
this.alerts = [];
Accounts.createUser(this.credentials, (error) => {
if (error) {
this.alerts.push({severity: 'danger', detail: error.reason || 'Unknown error'});
} else {
this.alerts.push({severity: 'success', detail: 'Account created!'});
}
});
}
...
IAlert
export interface IAlert {
severity: string;
detail: string;
}
ありがとうAmit、私はこの問題で数週間苦労しました!それは完璧に動作します! –