class 可以扩展服务并在 angular 2 中用 new 关键字实例化吗?

can a class extend a service and be instantiated with new keyword in angular 2?

你好,我有一个类似的服务

@Injectable()
export class ParentService{

  constructor(private http:Http){}

  get(){this.http.get(...)}
}

我可以创建一个扩展服务的 class 吗?例如

export class SomeClass extends ParentService {
  public name:string;
  constructor(name:string, private http:Http){
    super(http);
    this.name = name;
  }
}

并使用 new 关键字在组件内部实例化,例如

export class Cmp{
  instance:any;
  constructor(){
    this.instance = new SomeClass('InstanceOne', ?? )
    this.instance.get();
  }
}

我的想法是,对于每个新实例,我都可以将一个字符串作为 urlPath 传递,并使用该实例从我的服务中调用通用函数。谢谢!

如果你想让DI传递一个构造函数参数,那么你需要将实例化委托给Angulars DI。

你能做的是

export class Cmp{
  instance:any;
  constructor(http:Http){
    this.instance = new SomeClass('InstanceOne', http);
    this.instance.get();
  }
}

或者您可以提供一个字符串并使用 @Inject('sometoken') 来获取 DI 在创建新的 SomeClass.

时传入的 name