Состояние ngxs не инициализируется при первой загрузке - PullRequest
0 голосов
/ 24 марта 2020

Я вызываю метод my service для получения записей и обновления состояния (ngsx) с помощью логического значения, если запись существует. Если запись существует, я устанавливаю значение соглашенияExists в состоянии true, иначе устанавливая его в false. Я пытаюсь загрузить модальное диалоговое окно в компонент приложения и подписаться на наблюдаемую, чтобы проверить, существует ли запись. В тот момент, когда первый раз, когда компонент приложения загружается, само соглашениеModalStatus не определено и инициализируется только после refre sh. Может ли кто-нибудь сказать мне, в чем проблема. Как я могу решить эту проблему

appcomponent

public ngOnInit() {
    this.agreementModalState$.pipe(first()).subscribe(agreementModalStatus => {
      console.log('Inside ngOnit- AppComponent');
      console.log(agreementModalStatus.agreementExists);
      console.log(agreementModalStatus.isInteracted);
      if (agreementModalStatus !== undefined && agreementModalStatus.isInteracted === false && agreementModalStatus.agreementExists) {
        this.loadModalDialog();
     }
   });
  }

  public loadModalDialog() {
    this.modal = this.modalService.open(AgreementComponent, { size: 'lg', centered: true , backdrop: 'static'});

  }

компонент

public getOutstandingAgreements(Id: number) {
    this.loading = true;
    this.agreementsService
      .getOutstandingAgreements(Id)
      .subscribe((data: AgreementsModel[]) => {
        if (data.length > 0) {
          console.log('IF block');
          this.store.dispatch(new SetAgreementStatus({ isInteracted: false , agreementExists: true}));
          this.myData = data;
          this.agreementData = this.myData[0].data;
          this.agreementLength = this.myData.length;
          this.SetWarningMessage(0);
          this.loading = false;
        } else {
          console.log('Else block');
          this.store.dispatch(new SetAgreementStatus({ isInteracted: false , agreementExists: false}));
        }
      });
  }

1 Ответ

0 голосов
/ 25 марта 2020

В вашем государственном классе рядом с вашим декоратором. Предоставляете ли вы значения по умолчанию и как таковое значение по умолчанию не определено изначально? Если так, вот почему у вас есть одно «уведомление» о неопределенных. После этого вы получите настоящее уведомление в потоке.

...