是否可以将服务用于Angular 2+中的typescript类

时间:2017-07-06 10:44:08

标签: angular

我有一个如下的类,它没有用@Injectable

注释
export class A extends B {

    calculateTotal(): number {
        //Implementation
    }
} 

上面的函数calculateTotal需要使用一个用@Injectable注释的服务,以便能够获得一些值来执行一些总计。问题是:将该服务用于该类是否可以?

阿什利

1 个答案:

答案 0 :(得分:1)

有一种方法可以将SomeService个实例注入class A。我使用的那个,例如在Ionic 2中是:

  • 如果A类可以是一个组件,请将@Component装饰器添加到其定义中,并将providers元数据添加到其中;
  • 导入class A定义文件中的服务定义;
  • class A添加构造函数方法,并将服务实例声明为参数。

例如,假设服务类名为SomeService,并且在与当前源文件相同的目录中的文件some.service.ts中定义:

import { Component } from '@angular/core';
import { SomeService } from './some.service';

@Component({
    providers: [ SomeService ]
})
export class A extends B {

    constructor( public s:SomeService ){}

    otherMethod(){
        this.s; // SomeService is accessible like this
    }
}

the official docs中提供了更多信息。