Зачем implements OnInit?

262
26 октября 2017, 11:09

Подскажите пожалуйста зачем для хука OnInit в объявлении класса в компоненте пишут так:

export class SpeakersComponent implements OnInit {

Компонент работает без проблем и так:

export class SpeakersComponent {

Если же всё таки первая запись зачем-то нужна, то как быть в случае использования нескольких хуков в одном компоненте. Например OnInit, ngDoCheck, ngOnDestroy ? Как известно в ангуляре нет множественного наследования.

Answer 1

Тогда просто перечислите несколько интерфейсов export class SpeakersComponent implements OnInit, OnDestroy....

На самом деле перечисление интерфейсов нужно только для того чтобы помочь вам не забыть имплементировать их т.к. ИДЕ и компилятор покажут ошибку, но при срабатывании соответствующего события Angular просто проверяет наличие у объекта соответствующего метода (ngOnInit, ngOnDestroy соответственно) и если он определен - вызывает его. Он не может определить в рантайме был ли у класса указан интерфейс или нет. Т.е. ngOnInit будет вызван даже если implements OnInit НЕ БЫЛ указан.

https://angular.io/guide/lifecycle-hooks

Answer 2

После создания компонента фреймворк Angular вызывает у этого компонента ряд методов, которые представляют различные этапы жизненного цикла. Каждый такой метод определен в отдельном интерфейсе, который называется по имени метода без префикса "ng". Например, метод ngOnInit определен в интерфейсе OnInit. Поэтому, если мы хотим отслеживать какие-то этапы жизненного цикла компонента, то класс компонента должен применять соответствующие интерфейсы

https://metanit.com/web/angular2/2.8.php

READ ALSO
Распечатать pdf без открытия

Распечатать pdf без открытия

Нашла тут http://jsfiddlenet/Q5Xc9/1/ вот такой код для кнопки печати:

295
Подключаю js через elixir, но функции и переменные не находит

Подключаю js через elixir, но функции и переменные не находит

Подключаю вот так <script src="{!! elixir('/js/mainjs') !!}" ></script> Файл лежит в public/js Но функции из этого файла не находит

273
Конфликт jQuery: $ is not a function

Конфликт jQuery: $ is not a function

Консоль выдает такую ошибку:

326