Вызовите ngAfterViewInit углового компонента из общего места - PullRequest
0 голосов
/ 01 января 2019

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

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

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

Component_1: в компоненте нет компонента ngAfterViewInit, цикл жизниявляется триггером из некоторого общего места.

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

ngAfterViewInit() {
    // Some extra functionality
  }

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

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

Спасибо

1 Ответ

0 голосов
/ 02 января 2019

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

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

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;
}
...