ngOnInit在Angular 5的所有继承类中多次调用

时间:2018-12-19 02:58:10

标签: angular class inheritance duplicates

我从'@ uirouter / angular'使用import {Ng2StateDeclaration}; 我现在在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`

}

结果是:Paper类的ngOnInit运行4次,这意味着this.loadData()也运行4次。 因此,任何防止此问题的方法,我都希望该生命周期仅运行1次!谢谢。

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题。不是继承PaperEditForm1类中的Paper类,而是使函数 loadData静态。将Paper类导入子PaperEditForm1类中。现在,只需调用使用 Paper.loadData()加载loadData静态函数。这样可以最大程度地减少构造函数调用,并删除继承。仅在需要时才进行调用。这解决了我的情况。