@injectable和es6模块的角度服务

时间:2017-04-05 06:56:48

标签: angularjs angular ecmascript-6 singleton injectable

在angular中,我们需要创建@Injactable服务类并将其提供给我们的项目。

理论上我们也可以导入作为单例服务执行的es6模块。

除了这不是“有角度的方式”之外,为什么这种方法不常见?

角度方式

import { Injectable } from '@angular/core';
@Injectable()
export class fo {
   getFo():{
   }
}

es6 way

    const bla = []
    const fo() => {return bla}
    export {
        fo
    }

1 个答案:

答案 0 :(得分:2)

@Injectable()仅在您的服务注入其他服务时才需要。

示例:

@Injectable()
export class fo {
   constructor(private myOtherService: MyOtherService){}
}

除此之外,你是对的,返回const几乎是一回事。但是,正如您所理解的那样,添加注释和逻辑是一种好习惯。

来源:https://angular.io/docs/ts/latest/cookbook/dependency-injection.html#!#-injectable-

  

从技术上讲,只有具有自己依赖关系的服务类才需要@Injectable()装饰器

<小时/> 不久,我们使用@Injectables来获取/设置数据,并在组件和整个应用程序之间进行通信,这些应用程序是我们的依赖注入树的一部分。 关于您应该使用@Injectable()的原因的官方文档有更深入的指南。

  

为何选择@Injectable()?

     

@Injectable()标记一个类可用于实例化的注入器。一般来说,在尝试实例化未标记为@Injectable()的类时,注入器会报告错误。

来源:https://angular.io/docs/ts/latest/guide/dependency-injection.html#!#why--injectable--