Есть ли способ заполнять журнал каждый раз, когда обнаружение изменений выполняется на уровне компонента?

#angular

#angular

Вопрос:

Есть ли способ регистрировать каждый раз, когда Angular запускает обнаружение изменений в компоненте?

например, у меня есть три компонента: foo , bar и baz .

при запуске обнаружения изменений он будет console.log :

 Run change detection on `foo`.
Run change detection on `bar`.
Run change detection on `baz`.
 

Таким образом, я буду знать, на каком компоненте выполняется обнаружение изменений.

Комментарии:

1. Вы можете сделать это в крючке жизненного цикла ngOnChanges

2. onChanges будет срабатывать только при изменении @Input ..

3. Сработал ли мой ответ для вас?

Ответ №1:

Да, реализуйте doCheck и console.войдите в него.

 @Component({selector: 'my-cmp', template: `...`})
class MyComponent implements DoCheck {
  ngDoCheck() {
    console.log("Change detection reached MyComponent")
  }
}
 

Объяснение:
на ngDoCheck самом деле этот метод является вашим расширением проверки на загрязнение компонента. Его код будет скомпилирован и добавлен на фабрику вашего компонента в части обнаружения изменений.

Обратите внимание: если вы не видите консоль.регистрируйте, значит, обнаружение изменений не дошло до вашего компонента. Это может произойти, например, если вы используете onPush стратегию, а входные данные родительского компонента не изменились.