2016-09-20 34 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