我从'@ 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次!谢谢。
答案 0 :(得分:0)
我遇到了类似的问题。不是继承PaperEditForm1类中的Paper类,而是使函数 loadData静态。将Paper类导入子PaperEditForm1类中。现在,只需调用使用 Paper.loadData()加载loadData静态函数。这样可以最大程度地减少构造函数调用,并删除继承。仅在需要时才进行调用。这解决了我的情况。