我想扩展服务以覆盖某些方法并添加一些方法。
但是,我无法获得儿童服务的范围。我认为父服务也没有注入子类,我的意思是它看起来只是一个对象,而不是实例。
这是我的例子,
家长服务,
export class ParentService implements IModalMixin {
constructor(modalMixin: IModalMixin,
private _: _.LoDashStatic) {
}
doSomething() {}
parentMethod() {
return 'Okay';
}
}
儿童服务,
/* @ngInject */
export function childServiceFactory(ParentService: any) {
var extended = angular.extend(ParentService, {});
// override parent method
extended.doSomething = () => {
return this.parentMethod(); // error this.parentMethod is not a function
}
return extended;
}
//并加载到模块
module
.service('ParentService', MyService)
.factory('ChildService', childServiceFactory)
请告诉我我做错了什么?
我的角度版本是1.4.3。
答案 0 :(得分:2)
在这种情况下,您不应该使用箭头功能,否则上下文this
不是extended
对象。
正常功能可行:
/* @ngInject */
export function childServiceFactory(ParentService: any) {
var extended = angular.extend(ParentService, {});
// override parent method
extended.doSomething = function () {
return this.parentMethod();
}
return extended;
}