Вызовы конструктора Javascript - PullRequest
0 голосов
/ 03 июля 2018

Привет, поэтому в приложении, над которым я работаю, у меня есть этот конструктор, который проверяет хранилище избыточности на наличие сообщений об ошибках, передаваемых различными компонентами. Он отображает сообщения об ошибках или об успехе просто отлично. Однако, как только пользователь отклоняет баннер (нажав x), и я перехожу в портфолио другого человека, на баннере больше не отображаются сообщения об ошибках или успехах

constructor(private store: Store<State>) {
  store
  .select(StatusBannerState)
  .map(data => {
    return data.status_banner;
  })
  .subscribe(banner_state => {
    if (banner_state.success_list.length > 0) {
      this.showBanner = true;
      this.bannerMessage = this.createSuccessBannerMessage(
        banner_state.success_list
      );
      setTimeout(() => {
        this.store.dispatch(new BannerDimissesSuccessMessage());
        this.bannerMessage = this.createErrorBannerMessage(
          banner_state.error_list
        );
      }, 5000);
    } else if (banner_state.error_list.length > 0) {
      this.bannerMessage = this.createErrorBannerMessage(
        banner_state.error_list
      );
    } else {
      this.showBanner = false;
      this.bannerMessage = '';
    }
  });
}

В данный момент у меня есть эта тестовая функция, которую я вызываю в функции createErrorMessage, чтобы показать или скрыть функцию (я вызываю ее в компоненте HTML углового приложения)

showOrHideBanner(errorWidget) {
  errorWidget.length === 0
   ? (this.showBanner = false)
   : (this.showBanner = true);
}

У меня есть другой метод, который очищает хранилище избыточности при инициализации

ngOnInit() {
  this.store.dispatch(new UserDismissesEverything());
}

Какой лучший способ проверить сообщения об ошибках еще раз после того, как пользователь отклонил баннер

обновление: код для закрытия

onCloseClick() {
  this.close.emit(true);
  this.show = false;
  this.clearTimeout(this.timeoutId);
}

HTML-код компонента

<div class="mt-1 container">
    <div class="alert-box">
    <div *ngIf="bannerMessage" class="px-3 mb-1">
                    <glass-alert-box
                        (close)="hideTheBanner()"
                      [success]="bannerMessageType == 'success'">{{ bannerMessage}}
                    </glass-alert-box>
            </div>
    </div>
</div>

1 Ответ

0 голосов
/ 03 июля 2018

Попробуйте следующий код:

constructor(private store: Store<State>) {

}

ngOnInint() {
    this.store.dispatch(new UserDismissesEverything());
}

ngAfterViewInint() {
    this.store.select(StatusBannerState).map(data => {
        return data.status_banner;
    }).subscribe(banner_state => {
        if (banner_state.success_list.length > 0) {
            this.showBanner = true;
            this.bannerMessage = this.createSuccessBannerMessage(banner_state.success_list);
            setTimeout(() => {
                this.store.dispatch(new BannerDimissesSuccessMessage());
                this.bannerMessage = this.createErrorBannerMessage(banner_state.error_list);
            }, 5000);
        } else if (banner_state.error_list.length > 0) {
            this.bannerMessage = this.createErrorBannerMessage(banner_state.error_list);
        } else {
            this.showBanner = false;
            this.bannerMessage = '';
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...