2016-09-20 64 views
0

在我的Angular2应用程序中,当视图可用时,必须在每个组件初始化后调用脚本。Angular 2 - 为所有组件定义ngAfterViewInit

我正在寻找为所有组件定义“ngAfterViewInit”生命周期回调globaly的最佳方法。我无法在每个组件中编写它,因为团队中的某个人发生了巨大的变化而忘记了它。

我已经考虑:

  • 覆盖@Component,如果可能的话
  • 使用路由

有没有办法做到这一点?

感谢您的帮助!

+1

怎么样抽象类? – kit

+0

如果你只是担心有人忘记编写ngAfterViewInit方法,为什么不写一个单元测试或预先提交钩子检查? – StephaneM

回答

2

您需要创建一个抽象类,然后从该类扩展所有组件(类)。

喜欢的东西:

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

+0

谢谢!似乎是一个可以接受的解决方案。 也感谢@kit提出了相同的解决方案 – CyrilleGuimezanes