如何在 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()

引用本教程:

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

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

这是一个更好的方法:

class RaceList {
races: Array<string>;
constructor(private raceService: RaceService) {          
raceService.list()
.then(races => this.races = races);
}
}

如您所见,您不需要将服务的值保存在类变量中,因为它设置为私有,它可以通过调用this.raceServiceRaceList中的任何方法中使用。

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

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

您只需这样做:

constructor(private raceService: RaceService) {}

在后台,Angular 进行初始化,并通过组件的构造函数为您提供初始化的实例。

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

最新更新