Угловое сообщение об ошибке закрытия явно пользователем - PullRequest
0 голосов
/ 22 октября 2018

Привет! Я разработал веб-приложение на Angular 5. Я использую службу оповещений для отображения сообщения об ошибке.Теперь я могу отобразить сообщение об ошибке, но оно исчезает после отображения сообщения об ошибке.Мое требование - сообщение об ошибке не должно исчезать само по себе, и оно должно закрываться только тогда, когда пользователь нажимает на крестик.У меня ниже реализация класса обслуживания предупреждений.

export class AlertService {
  private messages = new Subject<AlertMessage>();
  private stickyMessages = new Subject<AlertMessage>();
  showMessage(summary: string)
    showMessage(summary: string, detail: string, severity: MessageSeverity)
    showMessage(summaryAndDetails: string[], summaryAndDetailsSeparator: string, severity: MessageSeverity)
    showMessage(response: HttpResponseBase, ignoreValue_useNull: string, severity: MessageSeverity)
    showMessage(data: any, separatorOrDetail?: string, severity?: MessageSeverity) {

        if (!severity)
            severity = MessageSeverity.default;

        if (data instanceof HttpResponseBase) {
            data = Utilities.getHttpResponseMessage(data);
            separatorOrDetail = Utilities.captionAndMessageSeparator;
        }

        if (data instanceof Array) {
            for (let message of data) {
                let msgObject = Utilities.splitInTwo(message, separatorOrDetail);

                this.showMessageHelper(msgObject.firstPart, msgObject.secondPart, severity, false);
            }
        }
        else {
            this.showMessageHelper(data, separatorOrDetail, severity, false);
        }
    }
}

Код Showmessagehelper.

 private showMessageHelper(summary: string, detail: string, severity: MessageSeverity, isSticky: boolean) {

    if (isSticky)
            this.stickyMessages.next({ severity: severity, summary: summary, detail: detail });
        else
            this.messages.next({ severity: severity, summary: summary, detail: detail });
    }
    showStickyMessage(summary: string)
    showStickyMessage(summary: string, detail: string, severity: MessageSeverity, error?: any)
    showStickyMessage(summaryAndDetails: string[], summaryAndDetailsSeparator: string, severity: MessageSeverity)
    showStickyMessage(response: HttpResponseBase, ignoreValue_useNull: string, severity: MessageSeverity)
    showStickyMessage(data: string | string[] | HttpResponseBase, separatorOrDetail?: string, severity?: MessageSeverity, error?: any) {

        if (!severity)
            severity = MessageSeverity.default;

        if (data instanceof HttpResponseBase) {
            data = Utilities.getHttpResponseMessage(data);
            separatorOrDetail = Utilities.captionAndMessageSeparator;
        }


        if (data instanceof Array) {
            for (let message of data) {
                let msgObject = Utilities.splitInTwo(message, separatorOrDetail);

                this.showMessageHelper(msgObject.firstPart, msgObject.secondPart, severity, true);
            }
        }
        else {

            if (error) {

                let msg = `Severity: "${MessageSeverity[severity]}", Summary: "${data}", Detail: "${separatorOrDetail}", Error: "${Utilities.safeStringify(error)}"`;

                switch (severity) {
                    case MessageSeverity.default:
                        this.logInfo(msg);
                        break;
                    case MessageSeverity.info:
                        this.logInfo(msg);
                        break;
                    case MessageSeverity.success:
                        this.logMessage(msg);
                        break;
                    case MessageSeverity.error:
                        this.logError(msg);
                        break;
                    case MessageSeverity.warn:
                        this.logWarning(msg);
                        break;
                    case MessageSeverity.wait:
                        this.logTrace(msg);
                        break;
                }
            }

            this.showMessageHelper(data, separatorOrDetail, severity, true);
        }
    }

Я использую службу предупреждений, как указано ниже в моих компонентах.

 this.alertService.showMessage(caption, message, MessageSeverity.error);

Над сообщением об ошибке отображается сообщение об ошибке в правом верхнем углу (красный цвет с крестиком).Это сообщение об ошибке исчезает, может быть через 2 секунды.Я хочу, чтобы сообщение об ошибке закрывалось только тогда, когда пользователь закрывает крестик.Может кто-нибудь сказать мне, как это сделать?Любая помощь будет оценена.Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...