【发布时间】:2018-10-26 00:41:22
【问题描述】:
我的头在这上面转了一圈。
我想创建类来表示从 Angular(不是 AngularJS)后端返回的数据。
我有两个顶级课程Variation 和Reallocation。两者都是基类Adjustment 的类型。因此Variation 和Reallocation 扩展 Adjustment。大多数类定义都在Adjustment 类中,两个派生类之间只有很小但很重要的区别。
使用Adjustment 类来处理与后端的大部分通信似乎很有意义。也就是说,假设我想得到一个Variation。我应该能够将 id 传递给 Variation 的 getAdjustment 方法,并让它返回一个填充了来自服务器的数据的 Variation 实例。
到目前为止,这一切对我来说都是合乎逻辑的,我可以让它发挥作用。
问题是我必须使用服务从后端获取数据。我碰巧正在使用 AngularFirestore 来获取数据。
所以,在我的Adjustment 类中,我必须包含一个构造函数,如下所示:
constructor(
public afs: AngularFirestore,
....){}
然后问题是当我在派生类中使用 super() 时。我还必须将 AngularFirestore 注入派生类。也就是说,我必须有类似的东西:
export class Variation extends Adjustment {
....
constructor(
afs: AngularFirestore,
.... ) {}
super (afs,
....)
Variation 类实际上并不需要了解有关 AngularFirestore 的任何信息,但我必须将其注入此类以使其能够注入到 Adjustment 类中。
一定有办法避免这种情况,但我就是想不通。
【问题讨论】:
-
我不认为有办法解决这个问题,但如果有的话,我很想看看 :)
-
我也不得不这样做。如果属性注入可用,也许它可以做不同的事情,但现在你已经通过了构造函数,所以我看不到另一种方式。
-
感谢您的 cmets。至少我没有遗漏一些非常明显的东西。
标签: angular service dependency-injection model class-hierarchy