如何避免在TypeScript,Angular2中的派生类中重复基类构造函数参数?

时间:2017-04-16 06:36:51

标签: angular typescript

@Injectable()
export class APIService {
  constructor(private http: Http) {
  }

}


@Injectable()
export class CourseAPIService extends APIService{

  constructor(private http2: Http){
    super(http2);
  }
}

我有基类作为APIService有Http作为构造函数参数,遗憾的是我必须在子类CourseAPIService中再次传递它。 如果有任何问题,请帮助我......?

2 个答案:

答案 0 :(得分:2)

如果您未使用CourseAPIService中的private http2属性,则可以从CourseAPIService完全删除构造函数。

如果您确实想要使用Http中的CourseAPIService服务,可以在http中将protected属性标记为APIService并与{分享CourseAPIService {1}}。

@Injectable()
export class APIService {
  constructor(protected http: Http) {
  }
}

但是,如果为CourseAPIService定义构造函数,则必须使用super调用其基类构造函数来传递必要的参数。

答案 1 :(得分:0)

AFAIK,答案是否。你需要从派生类调用super()。因此,如果您的基类具有依赖项,则派生类必须注入相同的依赖项并传递给super()方法。