Тесты кармы провалены из-за "ExpressionChangedAfterItHasBeenCheckedError" - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть веб-приложение, которое выдает ошибку ExpressionChangedAfterItHasBeenCheckedError на разных страницах.Это больше похоже на предупреждение, чем на ошибку, и веб-приложение работает хорошо.

В настоящее время нет такой возможности исправить код, чтобы устранить эту ошибку, и мне нужны тесты кармы, чтобы ее игнорировать.

Когда я запускаю тест кармы, я получаю:

Failed: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.

Есть ли способ игнорировать эту конкретную ошибку?

1 Ответ

0 голосов
/ 02 апреля 2019

У меня была такая же проблема.Обычно, даже если я получаю эту ошибку в консоли, выполняющей приложение, это все равно не приводит к сбою теста Karma / Jasmine (и в этом случае я фактически не получал ошибку консоли в приложении - только в Karma).

Я не уверен, что это была ваша проблема, но моя была связана с тем, как я использовал ngStyle.Не уверен, почему это решило это, но я решил добавить его сюда для всех, кто ищет ответы.

Ошибка

Я получал ошибку, когда былделает это:

Шаблон

<div [ngStyle]="{ 'width.px': (!checked ? widthValue : 0) }">Blah</div>

widthValue вычисляется AfterViewInit.

Я тоже пробовал этот формат (которыйтакже дал мне сообщение об ошибке):

<div [ngStyle]="{ 'width': (!checked ? widthValue : 0) + 'px' }">Blah</div>

Решение

Когда я переключил логику на компонент и просто передал получившийся объект стиля, это было нормально.

Шаблон

<div [ngStyle]="labelWidth(checked)">Blah</div>

Компонент

labelWidth(checked: boolean): SafeStyle {
  return {
    width: `${(checked ? this.maxLabelWidth : 0)}px`,
  };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...