2017-02-07 128 views
1

我想扩展服务以覆盖某些方法并添加一些方法。AngularJS使用工厂扩展服务并获得扩展范围

但是,我无法得到子服务的范围。我认为父服务也不会注入到子类中,我的意思是它看起来只是一个对象,而不是实例。

这里是我的榜样,

家长服务,

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) 

请告诉我什么我正在做G?

我的角度版本是1.4.3。

回答

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; 
} 
+0

OMG,它的作品!非常感谢你! –

+0

不,问题,很高兴帮助。 – dfsq