Модальное окно MatDialog не появляется в цепочке эффектов - PullRequest
0 голосов
/ 20 марта 2020

У меня следующий эффект после нажатия на кнопку. В веб-инспекторе я вижу, что он запускает this.dialogService.open, а также что он открывает ObjectAComponent, но модальное окно не отображается. dialogService.openDialogs возвращает массив с экземпляром MatDialogRef.

Я обнаружил, что при установке точки останова внутри mergeMap с инициализацией MatDialog, он показывает диалог без проблем

Есть идеи, что мешает появлению модального окна? Спасибо

objectA$ = createEffect(() =>
    this.actions$.pipe(
      ofType(ResponsesActions.objectA),
      switchMap(action => {
        try {
            return this.store.pipe(
              select(getAllResponses),
              take(1),
              mergeMap(responsePage => {
                const response = responsePage[0]
                const config = new MatDialogConfig();
                config.width = MODAL_WIDTH_ACTION_BUTTON;
                config.disableClose = true;
                config.autoFocus = true;
                config.data = {
                  response,
                };
                return this.dialogService
                  .open(ObjectAComponent, config)
                  .afterClosed();
              }),
              take(1),
              mergeMap((response: responsesEntity | false) => {
                if (response !== false) {
                  return this.responsesService
                    .link(action.link, response)
                    .pipe(
                      take(1),
                      map(updateResponse => {
                        return AssignmentResponsesActions.objectASuccess({
                          response: updateResponse
                        });
                      })
                    );
                } else {
                  return of(responsesActions.objectAFailure());
                }
              }),
              catchError(error =>
                of(
                  responsesActions.objectAFailure()
                )
              )
          );
        } catch (error) {
          return of(
            responsesActions.objectAFailure()
          );
        }
      })
    )
  );
...