#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
стратегию, а входные данные родительского компонента не изменились.