Предупреждение ng-bootstrap исчезает до полного обновления страницы - PullRequest
0 голосов
/ 16 октября 2018

Я использую ng-bootstrap и добавил оповещение к компоненту.

<div *ngIf="!staticAlertClosed" (close)="staticAlertClosed = true" 
     style="width:100%;white-space:nowrap;float:left">
    <ngb-alert style="float: left" [dismissible]="false" [type]="type"> 
         {{message}} 
    </ngb-alert>
</div>

, как вы можете видеть, я добавил таймер самозакрытия

Итак, после оповещенияпоказывает с событием, а затем исчезает (я пробовал это с событием тоже) Я должен сделать полное обновление страницы, чтобы снова показать оповещение?

это не кажется полезным, так как я мог бы показатьсообщение об ошибке, а затем сообщение об успешном завершении, когда пользователь исправил проблему.

Я что-то упустил?это ожидаемое поведение?

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Это может быть настроенное поведение и ожидаемое.Но здесь слишком много неизвестных, чтобы точно сказать.Во-первых, у вас есть внешний *ngIf, установленный на staticAlertClosed - который при нажатии вы устанавливаете в true.Так что он останется закрытым «навсегда» - или до перезагрузки страницы.Если вы хотите показать новое оповещение, вам придется снова установить для него значение false.

Вы уже делаете это?Если нет, то вот как это будет выглядеть в примере компонента:

const DEFAULT_ALERT_TIMEOUT = 3000; // expire message after 3 seconds.
export class MyComponent implements NgOnInit {
    message: string;
    type: string;
    staticAlertClosed = true; // do not show by default
    constructor(private messages: MessagesService) {} // inject a service which provides fresh messages

    ngOnInit() {
        // subscribe to the new messages
        this.messages.alerts$.subscribe(alert => {
            // new message
            this.message = alert.message;
            this.type = alert.type;
            this.staticAlertClosed = false;
            // auto-close if not error
            if (alert.type !== 'error') {
                setTimeout(() => this.staticAlertClosed, DEFAULT_ALERT_TIMEOUT)
            }
        });

Альтернативой может быть отслеживание сообщений и независимое отображение / скрытие каждого из них.Вы можете увидеть их примеры на странице ng-bootstrap .

0 голосов
/ 16 октября 2018

Возможно, вы не устанавливаете staticAlertClosed в true.Убедитесь, что вы выполняете оператор всякий раз, когда хотите показать сообщение об ошибке / успехе.

this.staticAlertClosed = true;
...