Angularjs 角度:子扩展父依赖项不工作

Angularjs 角度:子扩展父依赖项不工作,angularjs,service,ecmascript-6,extends,es6-class,Angularjs,Service,Ecmascript 6,Extends,Es6 Class,我有一个子服务,我想使用extends关键字从父服务扩展它。将另一个服务MyService注入子服务时遇到问题 export class ParentService { constructor($http) {} get() { this.$http.get('/someUrl').then(res => res.data); } } export class ChildService extends ParentService { constructor($h

我有一个子服务,我想使用
extends
关键字从父服务扩展它。将另一个服务
MyService
注入子服务时遇到问题

export class ParentService {
  constructor($http) {}

  get() {
    this.$http.get('/someUrl').then(res => res.data);
  }
}

export class ChildService extends ParentService {
  constructor($http, private MyService) {
    super($http);
  }

  get() {
    const data = super.get();
    return this.MyService.cleanData(data);
  }
}
由于某种原因,
MyService
ChildService
中恢复为
undefined
,我只能假设DI出了问题。但是,如果我删除
extends
关键字,
MyService
会按预期工作

知道这里发生了什么吗。感谢您的帮助。提前谢谢

尝试将
ParentService
ChildService
中的
get()
方法重命名为其他方法

get
是一种关键字/绑定语法,它将对象属性绑定到在查找该属性时调用的函数。编译器在
get
之后需要一个属性或函数名,可能会出错。即使在Plunkr中,get也由IDE突出显示,表示保留字/语法

get
可以像这样用于ES6类:

class Todo {
    constructor(task) {
        this.task = task;
    }

    get task() {
        return this.task.toUpperCase();
    }
}
该语法将对象属性绑定到将被调用的函数 在查找该属性时调用

尝试将
get
更改为
getData
或任何您需要的内容

export class ParentService {
  constructor($http) {}

  getData() {
    return this.$http.get('/someUrl');
  }
}

export class ChildService extends ParentService {
  constructor($http, private MyService) {
    super($http);
  }

  getData() {
    return super.getData()
        .then(data => this.MyService.cleanData(data))
        .catch(error => console.log(error));
  }
}
下面是一个演示非常基本级别的功能的示例,包括
ParentService
ChildService
MyService
,其中
MyService
被注入
ChildService
ChildService
扩展
ParentService
。在本例中,在子级的
构造函数()
内执行
console.log()
,以表明DI正确发生


希望这有帮助

你在上面的类中使用@Inject吗?@HasanBeheshti不,我没有使用Inject。我用的是角度1.5。“我用的是角度1.5”,那么请不要用角度标签。