Я реализовал ng2-bootstrap ngb-alert на странице приложения Meteor Angular 2. Когда я нажимаю предупреждение в массив предупреждений в машинописном тексте, предупреждение отображается только после того, как я снова щелкну окно браузера.
Нажатие выполняется в рамках обратного вызова функции Accounts.createUser. Если отправка выполняется в методе регистрации (а не в функции обратного вызова 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;
}