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”,那么请不要用角度标签。