在我的Angular2应用程序中,当视图可用时,必须在每个组件初始化后调用脚本。Angular 2 - 为所有组件定义ngAfterViewInit
我正在寻找为所有组件定义“ngAfterViewInit”生命周期回调globaly的最佳方法。我无法在每个组件中编写它,因为团队中的某个人发生了巨大的变化而忘记了它。
我已经考虑:
- 覆盖@Component,如果可能的话
- 使用路由
有没有办法做到这一点?
感谢您的帮助!
在我的Angular2应用程序中,当视图可用时,必须在每个组件初始化后调用脚本。Angular 2 - 为所有组件定义ngAfterViewInit
我正在寻找为所有组件定义“ngAfterViewInit”生命周期回调globaly的最佳方法。我无法在每个组件中编写它,因为团队中的某个人发生了巨大的变化而忘记了它。
我已经考虑:
有没有办法做到这一点?
感谢您的帮助!
您需要创建一个抽象类,然后从该类扩展所有组件(类)。
喜欢的东西:
import { Component } from '@angular/core';
export abstract class AbstractViewInit {
ngAfterViewInit() {
console.log('after View init');
}
}
@Component({
selector: 'child',
template: 'I am a child'
})
export class ChildComponent extends AbstractViewInit {}
@Component({
selector: 'my-app',
template: '<h1>My First Angular 2 App</h1> <child></child>'
})
export class AppComponent extends AbstractViewInit {}
工作plunker:http://plnkr.co/edit/Lmyes9vmUosGS5shvHqA?p=preview
谢谢!似乎是一个可以接受的解决方案。 也感谢@kit提出了相同的解决方案 – CyrilleGuimezanes
怎么样抽象类? – kit
如果你只是担心有人忘记编写ngAfterViewInit方法,为什么不写一个单元测试或预先提交钩子检查? – StephaneM