Вызовите ngAfterViewInit углового компонента из общего места

Я использую всплывающую подсказку. Я хочу, чтобы вызвать ngAfterViewInit для каждого компонента из какого-то общего места.

Общее место (например, app.module.ts)

ngAfterViewInit() {
    $('[data-toggle="tooltip"]').tooltip();
  }

Компонент_1: в компоненте отсутствует ngAfterViewInit, а жизненный цикл запускается из какого-то общего места.

Компонент_2: этот компонент имеет ngAfterViewInit,

ngAfterViewInit() {
    // Some extra functionality
  }

В этом случае ngAfterViewInit запускается из обоих мест (обычное место, а также из соответствующего компонента)

Есть ли способ добиться этого?

Спасибо

1 ответ

Нет "одного общего места", где вы можете определить глобальное поведение для всех ваших компонентов.

Вместо этого вы можете создать следующий класс и расширить его желаемыми компонентами:

export abstract class BaseComponent implements AfterViewInit {
  /**
   * View initialization behavior. Note that derived classes must not implement AfterViewInit .
   * Use viewInit() on derived classes instead.
   */
  ngAfterViewInit(): void {
    // Your code
    this.viewInit();
  }

  /**
   * Function that allows derived components to define an additional view initialization behavior
   */
  abstract viewInit(): void;
}
Другие вопросы по тегам