Вызов метода после отрисовки DOM элемента и *ngIf - Angular

Необходимо вызвать функцию после отрисовки шаблона, который создаётся с помощью *ngIf

Как я понял, политика Angular такая, что не нужно завязывать методы на изменения чего-то в DOM, а нужно делать наоборот, т.е. если у меня есть подобный код:

public switch(): void {
  this.isVisible = !this.isVisible;
  // Тут необходимо выполнить какой-то код, поэтому сюда будем добавлять метод
}

Я должен добавить вызов метода после смены флага, который использует *ngIf

Тут у меня возникает следующая проблема: этот метод, который мне нужно добавить, взаимодействует с DOM шаблона, который ещё только построится в *ngIf. К примеру, он должен добавить какой-то класс к третьему элементу, а так как несмотря на то, что смена флага произошла, но сам DOM ещё не отрисован, то я не могу добавить именно к третьему элементу, ведь он ещё не отрисован.

Решения, которые я смог выдавить из себя:

  1. Использовать NgAfterViewInit - в таком случае всё действительно работает, но метод вызывается очень часто. Т.е. если это какой-нибудь выпадающий список, где при фокусе на элементы происходит его выделение, то метод будет вызываться при каждом смене элемента.
  2. Обернуть метод в setTimeout с параметром 0, тогда всё хорошо работает, но вызывается цепная реакция и код покрывается таймаутами.

Существует ли ещё способ разрешить данную ситуацию?


Ответы (0 шт):