ngOnInit вызывается много раз во всех классах наследования в Angular 5 - PullRequest
0 голосов
/ 19 декабря 2018

Я использую import {Ng2StateDeclaration} из '@ uirouter / angular';И теперь я сталкиваюсь с проблемой в Angular 5. У меня есть класс Paper без шаблона:

export class Paper implements OnInit {
  ngOnInit(): void {
     // async function here
     this.loadData();
   }

}

Теперь у меня есть другой класс с именем PaperEdit:

export class PaperEdit extends Paper{
  constructor(){super();}
}

В классе PaperEdit у меня много частей с длинным html: paper-edit.html

<paper-edit-form-1></paper-edit-form-1>
<paper-edit-form-2></paper-edit-form-2>
<paper-edit-form-3></paper-edit-form-3>

PaperEditForm1,2,3 - это класс только с HTML-файлами, без логики, я хочу наследовать все переменные ифункции из класса Paper, такие как PaperEdit

export class PaperEditForm1 extends Paper {
  constructor(){super();}
  // no function here`

}

И результат: ngOnInit класса Paper выполняется 4 раза, это означает, что this.loadData () также выполняется 4 раза.Таким образом, любые методы, чтобы предотвратить эту проблему, я хочу, чтобы жизненный цикл запускался только 1 раз!Спасибо.

1 Ответ

0 голосов
/ 19 декабря 2018

Я сталкивался с подобной проблемой, подобной этой. Вместо наследования класса Paper в классе PaperEditForm1 просто сделайте функцию loadData static . Импортируйте класс Paper в дочерний класс PaperEditForm1. Теперь просто вызовитеСтатическая функция loadData с использованием Paper.loadData () . Это сводит к минимуму вызов конструктора, а удаляет наследование . Она вызывает только при необходимости. Это решило мой случай.

...