如何从构造函数传递参数到服务

时间:2016-12-17 11:54:30

标签: angular

我试图将一些值从组件传递给服务构造函数。 试图传递参数的我的对象。 我的代码是:

 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);
        });
      }

1 个答案:

答案 0 :(得分:1)

在服务构造函数中执行请求不方便,因为服务实例在当前注入器中是单例。 af.database.list仅在第一次注射时被调用一次,而param也只会注入一次。

另一个问题是DI发生在组件构造函数之前。

应该是

constructor(public af: AngularFire, public userData: UserData) {}

getData(param: boolean) {
    return this.af.database.list(...);
}