Angular2 обнаружение изменений при изменении размера div

Я использую бутстрап для своего макета, и мне нужно проверить, изменен ли автоматический расчетный размер моего DIV с бутстрапом, например width = 25%.

Есть ли возможность сделать обнаружение изменений по атрибуту, который я не задал в своем шаблоне, но устанавливается с помощью бутстрапа. (окно: изменение размера) недостаточно.

ТНХ

Ответ 1

Вы можете добавить директиву в div и реализовать привязку жизненного цикла ngDoCheck(), чтобы выполнить свою собственную логику обнаружения изменений. Вам нужно ввести ElementRef:

constructor(private _elRef:ElementRef) {}
ngDoCheck() {
   // use ElementRef to examine the div property of interest

Если div находится внутри шаблона компонента, добавьте локальную переменную шаблона

<div #myDiv ...>

Затем используйте @ViewChild(), чтобы получить ссылку на div и реализовать привязку жизненного цикла ngDoCheck() или ngAfterViewChecked() для выполнения вашей собственной логики обнаружения изменений.

@ViewChild('myDiv') theDiv:ElementRef;
ngAfterViewChecked() {
   // use this.theDiv to examine the div property of interest

Обратите внимание, что ngDoCheck() и ngAfterViewChecked() будут вызываться при каждом запуске обнаружения изменений. См. Также руководство разработчика Зажимы жизненного цикла.

Ответ 2

Существует несколько способов отслеживания изменений атрибутов DOM:

  • опрос, т.е. setInterval
  • Мутация DOM events: DOMAttrModified + propertychange для IE
  • реализация MutationObserver