如何从baseComponent Angular2继承?

时间:2017-08-21 19:06:03

标签: javascript angular angular-services

我正在构建一个角度项目。 我想创建一个具有通用功能的BaseComponent。 例如:我有一个TeacherIndexComponent:

@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));

  }

在每个组件中,我必须注入 OtherService 。我想创建一个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类似,是否可以在Angular中构建它?或者我应该在每个组件中重复代码?

非常感谢!

1 个答案:

答案 0 :(得分:1)

如果您通过实施自己的BaseComponent继承OnInit以致致BaseComponent.ngOnInit,则需要在当前实施的super.ngOnInit()方法中调用ngOnInit(在您的情况下) TeacherIndexComponent.ngOnInit