【发布时间】:2018-04-15 06:58:08
【问题描述】:
我有一个新项目并添加了 angularfire2:
npm install angularfire2 firebase --save
在 app.module.ts 我导入模块并初始化它:
import { AngularFireModule } from 'angularfire2';
...
imports: [
...
AngularFireModule.initializeApp(firebaseconfig)
然后我可以通过这样的导入在我的组件中使用它:
import { AngularFire, FirebaseListObservable } from 'angularfire2';
...
constructor(public navCtrl: NavController, public navParams: NavParams,
public af: AngularFire) {
this._users = af.database.list('users').valueChanges();
}
一切都很好。
但我想将该数据库处理移至提供程序。所以我创建了一个提供程序,将名称添加到 app.module.ts providers[] 并将其导入到我的组件中:
constructor (constructor(public navCtrl: NavController, public navParams: NavParams,
public db: DataserviceProvider) {
this._users = db.users().valueChanges();
}
提供者如下所示:
@Injectable()
export class DataserviceProvider {
private _users: FirebaseListObservable<any[]>;
constructor(public af: AngularFire) {
this._users = af.database.list('users').valueChanges();
}
users(): FirebaseListObservable<any[]> {
return this._users;
}
}
然后给我一个奇怪的错误:
compiler.es5.js:1694 Uncaught Error: Can't resolve all parameters for DataserviceProvider: (?).
当我从构造函数中删除“public af:AngularFire”时,该错误消失了(但显然在组件中给出了其他错误)。
我一直在寻找几个小时,那个“解决”错误的通用版本似乎表明一个循环依赖。但是无论我怎么看,我似乎都找不到任何循环。任何指针都非常感谢!
【问题讨论】:
-
请参考codingthesmartway.com/…,这可能对您有所帮助。
标签: angular firebase firebase-realtime-database