私は角度のあるプロジェクトを構築しています。 共通の機能を持つ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
を継承する場合は
は、[OK]を、ので、BaseComponentを使用すると、透明でない(あなたのケース
TeacherIndexComponent.ngOnInit
に)現在実装ngOnInit
メソッド内super.ngOnInit()
を呼び出す必要があります。すべてのコンポーネントは、ngOnInit()のsuper.ngOnInit()を呼び出す必要があります:/ –これはAngularの機能ではありません。それは継承が(おそらく)すべての言語(フレームワークではない)でどのように機能するかです。 – be4code