【发布时间】:2018-08-16 08:18:45
【问题描述】:
问题
所以我在database.ts 中写了一个Database 类,我希望有两个可注入成员Document 和List,它们都在同一个文件中。由于项目的组织,它们必须保留在同一个文件中。经过孜孜不倦的尝试,我一直无法使Database的document和list非空成员,或者通过Database的构造函数注入这些类。错误包括Can't resolve all parameters for Database、Can't get document of undefined 等。这是我的尝试。
尝试
database.ts:
Database 类(多次尝试)
@Injectable()
export class Database {
constructor(@Inject(Document) public document:Document, @Inject(List) public list:List) {}
}
@Injectable()
export class Database {
public document:Document;
public list:List;
}
Document 类
@Injectable()
class Document {
constructor(private events:Events, private db: AngularFireDatabase, public auth:Auth, public utility:Utility) {}
...
}
List 类
@Injectable()
class List {
constructor(private events:Events, private db: AngularFireDatabase, public auth:Auth, public utility:Utility) {}
...
}
注意事项
我想找到一个可以引用数据库类及其子类的解决方案,如下所示:
this.database.document.function() 和 this.database.list.function()。
非常感谢!
【问题讨论】:
-
您是否尝试过在构造函数中不使用 @Inject(...) 的东西?另外,您是否通过提供者注册了所有三个课程?
-
@DanielWSrimpel 好问题;是的,我试过这样做,并且我的模块中只有
Database作为提供者,因为对所有三个都这样做会导致循环依赖错误。 -
这三个都需要被列为提供者(这就是为什么你用@Injectable标记它们)。如果存在循环引用问题,那么会发生其他一些事情,因为数据库依赖于这两个,并且在另一个方向上没有依赖关系。
标签: angular typescript ionic-framework ionic3 angular5