我正在建立一个有角度的项目。
我想创建具有通用功能的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中构建它吗?还是我应该在每个组件中重复代码?

非常感谢!

最佳答案

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

关于javascript - 如何从baseComponent Angular2继承?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45804036/

10-09 05:00