2016-09-20 4 views
0

내 Angular2 응용 프로그램에서 뷰를 사용할 수있게되면 각 구성 요소를 초기화 한 후에 스크립트를 호출해야합니다.각도 2 - 모든 구성 요소에 대해 ngAfterViewInit 정의

모든 구성 요소에 대해 "ngAfterViewInit"수명주기 콜백을 전역으로 정의하는 가장 좋은 방법을 찾고 있습니다. 나는 팀의 누군가가 그것을 잊어 버린 큰 변화가 있기 때문에 각 구성 요소에 그것을 쓸 수는 없다.

  • 재정의 @Component, 가능하면
  • 사용

이 할 수있는 방법이 있나요 라우팅 : 나는 생각했다 무엇

?

도움 주셔서 감사합니다.

+1

방법 추상 클래스에 대한 있습니까? – kit

+0

누군가가 ngAfterViewInit 메소드를 작성하는 것을 잊어 버렸다는 것을 두려워한다면, 단위 테스트 또는 그 것을 확인하기위한 사전 커밋 훅 (pre-commit hook)을 작성하지 않으시겠습니까? – 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

관련 문제