我刚刚使用AngularFire2将我的Ionic应用程序代码库升级到ng2版本。在代码库中,我有一个名为FirebaseService的全局服务,它扩展了AngularFire。
@Injectable()
export class FirebaseService extends AngularFire {
constructor(firebaseConfig: string, auth: AngularFireAuth, database: FirebaseDatabase) {
super(firebaseConfig, auth, database);
}
...
}
在我的app.component.ts
我在providers
数组中添加了FirebaseService(我已经尝试了FirebaseService
和{ provide: AngularFire, useClass: FirebaseService }
)。但是,当我运行应用程序时,我收到以下错误:
Uncaught Error: Can't resolve all parameters for DiscoverPage: (NavController, GlobalService, ?, Events).
DiscoverPage
的构造函数如下:
@Component({
selector: 'catalogue-discover',
templateUrl: 'catalogue-discover.html'
})
export class DiscoverPage {
constructor(private nav: NavController,
private global: GlobalService,
public firebase: FirebaseService,
private events: Events) {
}
...
}
'?'指向FirebaseService - 我感觉我没有正确执行DI。关于如何进行的任何建议?
答案 0 :(得分:2)
有两个可能的问题:
如@shinglesmingles所述,您应该将装饰器# Extract all levels having > 1000 observations (df is the dataframe name)
val levels_count = df.groupBy("Col_name").count.filter("count >10000").sort(desc("count"))
# Extract the level names
val level_names = level_count.select("Col_name").rdd.map(x => x(0)).collect
添加到服务类声明中
避免循环引用,虽然它们通常有效,但有些情况下它们不会
[2]的例子:
# Define UDF
val var_transform = udf((x: String) => {
if (level_names contains x) x
else "others"
})
# Apply UDF to the column
val df_new = df.withColumn("Var_new", var_transform($"Col_name"))
答案 1 :(得分:0)
您应该将@Injectable()
装饰器添加到您的服务中。