在我的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