我试图将一些值从组件传递给服务构造函数。 试图传递参数的我的对象。 我的代码是:
constructor(public af: AngularFire, public userData: UserData ,param: boolean) {
this.smartTableData = this.af.database.list('events/' + this.userData.user.uid + '/contacts',{
preserveSnapshot: param, //this param should be taken from component
query: {
orderByChild: 'tableNumber'
}
});
和我的组件:
import {LocalDataSource} from 'ng2-smart-table';
@Component({
selector: 'basic-tables',
encapsulation: ViewEncapsulation.None,
styles: [require('./smartTables.scss')],
template: require('./smartTables.html')
})
export class SmartTables {
constructor(protected service: SmartTablesService) {
this.service.smartTableData.subscribe((data) => {
console.log(data);
this.source.load(data);
});
}
答案 0 :(得分:1)
在服务构造函数中执行请求不方便,因为服务实例在当前注入器中是单例。 af.database.list
仅在第一次注射时被调用一次,而param
也只会注入一次。
另一个问题是DI发生在组件构造函数之前。
应该是
constructor(public af: AngularFire, public userData: UserData) {}
getData(param: boolean) {
return this.af.database.list(...);
}