我有一个新项目并添加了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'时,该错误消失了(但显然在组件中给出了其他错误)。
我一直在寻找几个小时,这个'解决'错误的通用版本似乎表明了循环依赖。但是不过我看一下,我似乎无法找到任何循环......任何指针都非常感激!
答案 0 :(得分:2)
这是您的DataserviceProvider
看起来
constructor(private af: AngularFireDatabase) {
this._users = af.database.list('users');
}
users(): FirebaseListObservable<any[]> {
return this._users.valueChanges();
}
并在component
中致电
this._users = db.users();
答案 1 :(得分:1)
您也可以尝试这种方式:
#prog.py
topParser=argparse.ArgumentParser()
subParsers = topParser.add_subparsers(
title='SubCommands',
description='Use "prog.py <subCommand> (-h | --help)" to learn more about each subcommand',
help='I can do stuff')
subParser1 = subParsers.add_parser('use1', help="Use1 does one thing")
subParser2 = subParsers.add_parser('use2', help='Use2 does another thing')
subParser1.add_argument(
'-f','--first-arg-for-use1',
help="A text file",
required=True
)
subParser1.add_argument(
'-s','--second-arg-for-use1',
help="An encoding",
required=True
)
subParser2.add_argument(
'-f','--first-arg-for-use2',
help="An image format",
required=True
)
args = topParser.parse_args()
print(args)
或者有关更多信息,您可以访问(angular2,5 + firebase + bootsrap)中的整个应用程序: https://codingthesmartway.com/building-an-angular-5-project-with-bootstrap-4-and-firebase/