Метод
ɵmarkDirty() в Angular вручную помечает компонент как «грязный», инициируя обновление при следующем цикле детекции изменений. Это используется вне зоны Angular (например, в стороннем коде), и работает только с ChangeDetectionStrategy.OnPush.import {
Component,
ChangeDetectionStrategy,
ɵmarkDirty
} from '@angular/core';
declare const externalClick: (cb: () => void) => void;
@Component({
selector: 'app-alert',
template: `<p *ngIf="visible">Внешнее событие!</p>`,
changeDetection: ChangeDetectionStrategy.OnPush
})
export class AlertComponent {
visible = false;
ngOnInit() {
externalClick(() => {
this.visible = true;
ɵmarkDirty(this);
});
}
}В этом примере внешний обработчик (
externalClick) активирует компонент, не запуская Angular change detection. Мы вручную вызываем ɵmarkDirty(this), чтобы Angular отрендерил компонент на следующем проходе.👉 @sWebDev
