在下面的类中,我想抽象出http依赖关系,这样Angular 2就会使用普通的依赖注入来注入http对象。
import { Http } from '@angular/http';
class MyCollectionView<T> extends CollectionView {
constructor(private endpoint: string, private http: Http) {
}
// ... implemenation of class ...
}
我想按照以下方式使用该课程:
class MyClass {
private collection: MyCollectionView<ITestRow>;
constructor() {
this.collection = new MyCollectionView<ITestRow>('/some/endpoint');
}
}
要在我当前的实现中实例化,我必须写
class MyClass {
private collection: MyCollectionView<ITestRow>;
constructor(private http: Http) {
this.collection = new MyCollectionView<ITestRow>('/some/endpoint', http);
}
}
据我所知,不可能在构造函数中组合ng2依赖注入和自定义参数。我想我需要某种工厂功能来处理依赖注入部分,但到目前为止我没有运气。特别是因为该课程也使用了泛型。我可以在这里找到最佳实践吗?
请注意,在单元测试中,仍然可以使用MockBackend
来解析DI。
我在stackoverflow上找到this question,但它的most upvoted answer不能用于恕我直言,因为参数必须是动态的。
答案 0 :(得分:11)
依赖注入(DI)仅适用于DI创建的类。如果您使用new Xxx()
创建类,则不会发生DI。
如果实例是由DI创建的,那么您无法传递自己的参数 您需要为DI创建这些参数的提供程序才能注入它们。
你正在做的是正确的方法。
答案 1 :(得分:0)
据我所知,不可能在构造函数中组合ng2依赖注入和自定义参数。
在角度4中你可以做到。请在此处查看我的回答https://stackoverflow.com/a/46813768/586609