2017-04-16 9 views
1
@Injectable() 
export class APIService { 
    constructor(private http: Http) { 
    } 

} 


@Injectable() 
export class CourseAPIService extends APIService{ 

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

私は、コンストラクタパラメータとしてHttpを持つAPIServiceとしてベースクラスを持っていますが、残念ながら、子クラスCourseAPIServiceに再度渡す必要があります。 もしあれば、私を助けてください...?TypeScript、Angular2の派生クラスで基本クラスのコンストラクタパラメータを繰り返さないようにするにはどうすればよいですか?

答えて

1

​​でprivate http2プロパティを使用していない場合は、コンストラクタを​​から完全に削除できます。

あなたは​​でHttpサービスを利用したいならば、あなたはAPIServiceprotectedようhttpプロパティをマークし​​とそれを共有することができます。あなたが​​のコンストラクタを定義した場合

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

しかし、あなたはsuperは、必要な引数を渡すと、その基底クラスのコンストラクタを呼び出す必要があります。

0

AFAIK、答えはいいえ。派生クラスからsuper()を呼び出す必要があります。したがって、基底クラスに依存性がある場合、派生クラスは同じ依存関係を注入してsuper()メソッドに渡す必要があります。

関連する問題