ngOnChanges запускает без остановки и подает заявку на отказ - PullRequest
0 голосов
/ 24 июня 2018

Я создал компонент с именем "gw-responseive-tabs", который имеет вход с переменной (navLinks), которая представляет собой массив вкладок, которые я хочу отобразить.Когда я доставляю входные данные из HTML следующим образом:

<gw-responsive-tabs
  [navLinks]="[{ label: 'PENDING', path: '/mentoring/manage/pending' },
  { label: 'CURRENT', path: '/mentoring/manage/pending' }]">
</gw-responsive-tabs>

Тогда все работает как положено, и я вижу 2 вкладки.

Если я изменяю их и отправляю те же данные, используяgetter или функция, отличная от ngOnChanges компонента gw-responseive-tabs, запускает нон-стоп с очень высокой частотой, и с этого момента хром не отвечает.

get mentoringTabs(): Array<any> {
  return [{ label: 'PENDING', path: '/mentoring/manage/pending' }, { label: 'CURRENT', path: '/mentoring/manage/pending' }];
}

и html:

<gw-responsive-tabs [navLinks]="mentoringTabs"></gw-responsive-tabs>

Есть идеи, что может вызвать это явление?

1 Ответ

0 голосов
/ 24 июня 2018

Это из-за стратегии по умолчанию обнаружения изменений, она проверяется каждую секунду или около того. И не важно, что, если значение возвращаемого объекта изменяется или нет, он перерисовывает шаблон, и из-за этого каждый раз, когда он перерисовывает HTML, это вызов метода get, который возвращает новый объект каждый раз, когда он вызывается, и когда ngOnChanges сравнивает его, поскольку значение является новым объектом, теперь он выполняется в цикле.

вот ссылка на то, как работает обнаружение изменений https://angular -2-training-book.rangle.io / раздаточный / изменение обнаружения / angular_1_vs_angular_2.html

...