2017-08-21 25 views
0

私は角度のあるプロジェクトを構築しています。 共通の機能を持つBaseComponentを作成したいと思います。 例えば:私はOtherServiceを注入しなければならないすべてのコンポーネントでbaseComponentから継承する方法Angular2?

@Component({ 
    selector: 'app-teacher-index', 
    templateUrl: './teacher-index.component.html' 
}) 
export class TeacherIndexComponent implements OnInit { 
    public teachers : Profesor[]; 

    constructor(private _otherService: OtherService 
       private _teacherService: TeacherService, 
       private _messageService : MessageService) { 

    } 

    ngOnInit() { 
    this._otherService.doSomething(); 

    this._teacherService.getTeachers() 
       .subscribe(teacherData => this.teachers= teacherData, 
          error => this._messageService.showErrorMessage(error)); 

    } 

:私はTeacherIndexComponentを有します。 BaseComponentを作成したい。このコンポーネントでは、OtherServiceを挿入し、ngOnInit()をthis._otherService.doSomething()に呼び出します。 このbaseComponentにはテンプレート(html)のみの関数はありません。イベント関数(ngOnInit、ngOnDestroy)を使用する必要があります。 すべてのコンポーネントがBaseComponentまで伸び:

export class TeacherIndexComponent extends BaseComponent implements OnInit { 

とBaseComponentものOnInit実装:

export class BaseABMComponent implements OnInit { 

    constructor(private _otherService: OtherService) { 
    } 

    ngOnInit() { 
     this._otherService.doSomething(); 
    } 

これはBaseControllerに似ている、角度でそれを構築することは可能ですか?または、すべてのコンポーネントでコードを繰り返す必要がありますか?

ありがとうございました!あなたがBaseComponent.ngOnInitを呼び出すために自分のOnInitを実装してBaseComponentを継承する場合は

答えて

1

あなたは

+0

は、[OK]を、ので、BaseComponentを使用すると、透明でない(あなたのケースTeacherIndexComponent.ngOnInitに)現在実装ngOnInitメソッド内super.ngOnInit()を呼び出す必要があります。すべてのコンポーネントは、ngOnInit()のsuper.ngOnInit()を呼び出す必要があります:/ –

+0

これはAngularの機能ではありません。それは継承が(おそらく)すべての言語(フレームワークではない)でどのように機能するかです。 – be4code

関連する問題