Это потому, что detach()
отсоединяет компонент от его собственного ChangeDetector
, поэтому он не проверяет привязки шаблона / ввода / хоста.Это не то, что делает ngDoCheck
.Это используется для реализации своего рода обнаружения изменений, для изменений, которые, как вы знаете, произойдут, но угловые не могут предвидеть.Он вызывается для любого цикла в любом месте приложения.
Полагаю, единственный способ не запускать ваш код внутри ngDoCheck
- это установить флаг при отсоединении:
ngDoCheck(): void {
if (attached) {
// ...
}
}
НоЯ уверен, что вы тоже это поняли:)
Ссылка , предоставленная @selemmn, действительно дает хорошее представление