TypeScript类中的工作注入如何?

时间:2017-07-13 14:56:09

标签: angular typescript

有以下TypeScript类:

class RaceList {
    raceService: RaceService;
    races: Array<string>;

    constructor(raceService: RaceService) {
        // the interesting part is `: RaceService`
        this.raceService = raceService;
        this.raceService.list()
            .then(races => this.races = races);
      }
}

如果我没有这样的类初始化,this.raceService.list()如何处理这个结构:raceService = new RaceService()

3 个答案:

答案 0 :(得分:2)

引用this教程:

&#34; Angular 2服务只是一个javascript函数及其相关属性和方法,可以包含(通过依赖注入)到Angular 2组件中。它们允许您为可在这些组件中使用的特定任务开发代码。&#34;

它们在注入时不需要初始化(它是单独完成的),它们只有一个状态,只需要在给定的组件中注入。

这是一个更好的方法:

class RaceList {
    races: Array<string>;

    constructor(private raceService: RaceService) {          
        raceService.list()
            .then(races => this.races = races);
    }
}

正如您所看到的,您不需要将服务的值保存在类变量中,因为它设置为私有,可以通过调用{{1}在RaceList中的任何方法中使用它。 }。

答案 1 :(得分:1)

这是打字稿的语法糖, 而不是:

private raceService: RaceService;

constructor() {
    this.raceService = new RaceService;
}

你只需这样做:

constructor(private raceService: RaceService) {}

答案 2 :(得分:0)

通过引擎盖,Angular会进行初始化,并通过组件的构造函数为您提供初始化实例。

如果您的服务本身在其构造函数中需要其他服务,Angular会初始化其他服务,将它们提供给您的服务构造函数,然后将您的服务提供给您的组件。