如何在不注入祖父母的情况下注入孙子服务

时间:2017-03-10 18:53:37

标签: angular dependency-injection angular2-services

我想在根模块中注入孙子服务,如下所示:

providers:[MyAppTables]

我的服务结构是这样的:

@Injectable()
export class TableBase {

  protected _items: BehaviorSubject<any[]> = new BehaviorSubject([]);
  public items: Observable<any[]> = this._items.asObservable();

  constructor(){
    this.init([]);
  }

  init(newItems:any[]) {
    this._items.next(newItems);
  }
}

@Injectable()
export class TableProducts extends TableBase {

  constructor(@Inject(TableBase) __base: any ){
    super();
  }

  init() {
    super.init([{id:1,name:'A'},{id:2,name:'B'}]);
  }
}

@Injectable()
export class MyAppTables{
  public products: Observable<any[]>;

  constructor(@Inject(TableProducts) prod: any ){
    this.products = prod.items;
  }
}

到目前为止,我只能让它像这样工作

provider:[TableBase, TableProducts, MyAppTables]

我的问题是:有更好的方法可以注入这个吗?

注意:此示例仅显示1个父级,其目的是抽象祖父级类中的基本代码,为每个表创建父类并在需要的地方包含该服务

0 个答案:

没有答案