【问题标题】:Service inheritance with Angular 1.x and ES6Angular 1.x 和 ES6 的服务继承
【发布时间】:2017-03-21 08:53:34
【问题描述】:

我正在使用 Angular 1.6 和 ES6。到目前为止,我在 ES6 类上使用 extend 关键字实现了继承

export default class myChildService extends myBaseService {
    constructor(someDependency){
         'ngInject'
         super();

         someDependency.doStuff();
    }
}

并将子类注册为 angular-service

import myChildService from ./myChildService

angular.module('myApp', [])
    .service('myChildService', myChildService)

到目前为止效果很好!

但是,我想将我的应用程序拆分为更小的模块。这意味着我将拥有几个不同的角度模块,它们需要访问myBaseService 才能继承功能。

我可以只import 包含myBaseService 的文件,但这似乎不是很棱角分明。这基本上意味着我每次使用继承时都会忽略角度模块和 DI。

问题:

有没有办法从角度模块 base 导出 ES6 类,以便我可以在依赖于 base 的角度模块 child 上重用它?

也许我只是看错了 - 如果您有其他建议来实现角度服务/工厂的继承使用 ES6 类,请继续。

【问题讨论】:

  • 我想说你必须在所有你想extend它的地方importmyBaseService
  • 我猜 - 混合 angular-modules 和 es6-modules 感觉不对。至少我没有看到任何其他暴露角度模块以及一些普通 es6 类的角度库。
  • “混合使用 angular-modules 和 es6-modules 感觉不对” 它们完全不相关。这不是一个或另一个。
  • 我同意@Arg0n 解决方案。

标签: javascript angularjs inheritance ecmascript-6 es6-class


【解决方案1】:

为什么导入不是有角度的?如果你想使用基础服务功能,模块应该知道它的定义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 2016-06-24
    • 2019-02-26
    • 1970-01-01
    相关资源
    最近更新 更多