HttpInterceptor вызывает ExpressionChangedAfterItHasBeenCheckedError при закрытии MatDialog на канале дескриптора

У меня есть счетчик в компоненте диалогового окна, который я хочу отобразить до и после выполнения HTTP-запроса, диалоговое окно открывается и закрывается, как ожидалось, но он всегда выдает ошибку ExpressionChangedAfterItHasBeenCheckedError в ответе на запрос, который я перехватываю в handle.pipe.

@Injectable()
export class ApiHttpInterceptor implements HttpInterceptor {
  constructor(private router: Router, private sessionService: SessionService, private dialog: MatDialog) {}

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    const spinner = this.dialog.open(SpinnerDialogComponent, {
      disableClose: true,
      autoFocus: true,
      width: '150px',
      height: '150px',
      panelClass: 'spinner'});

      ...

      const authReq = req.clone({ headers: headers});

      return next.handle(authReq).pipe(tap(
        (event: HttpEvent<any>) => {
          if (event instanceof HttpResponse) {
            spinner.close();
          }
          return event;
        }));
  }
}

Я работаю с angular6

Как я могу это исправить?

stackoverflow.com/questions/51709592/…
Chellappan வ 15.08.2018 06:55

не могли бы вы опубликовать всю ошибку

frido 15.08.2018 11:03

MatDialogModule: 1 стек: "Ошибка: ExpressionChangedAfterItHasBeenCheckedError: Выражение было изменено после проверки. Предыдущее значение: 'id: undefined'. Текущее значение: 'id: mat-dialog-1'. Кажется, что представление было создано после его родительский и его дочерние элементы были грязно проверены. Был ли он создан в ловушке обнаружения изменений? \ n в viewDebugError (локальный: 4200 / vendor.js: 60615: 15) \ n в expressionChangedAfterItHasBeenCheckedError (локальный: 4200 / vendor.js: 60603: 12) \ n в checkBindingNoChanges

madmaux 15.08.2018 14:00

@Chellappan, который у меня не сработал, может быть, потому, что я использую простой объект? У меня просто аннотация Injectable вместо Component, это просто служба, и для нее нет жизненного цикла. Я пробовал другое решение, даже переместил это в компонент, но потом получаю разные ошибки, поэтому я снова вернулся с этим.

madmaux 15.08.2018 14:09
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
4
288
0

Другие вопросы по теме