【发布时间】:2016-11-07 21:56:22
【问题描述】:
我有一个 Angular2 DI 问题。假设我有一个TestService,并且我想在同一个组件中使用此服务的 2 个不同实例。如果我只是向组件添加一个提供程序,然后将 2 个实例添加到构造函数,我最终会得到相同的服务实例。例如:
测试服务
import {Injectable} from "@angular/core";
@Injectable()
export class TestService {
public id: number = Math.random();
public toString(): string {
return "Id: " + this.id;
}
}
测试组件
import {Component, Input, OnInit} from "@angular/core";
import {TestService} from "../../services/test.service";
@Component({
providers: [TestService]
})
export class TestComponent implements OnInit {
constructor(private _testService1: TestService, private _testService2: TestService) { };
ngOnInit() {
console.log("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", this._testService1.toString());
console.log("BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", this._testService2.toString());
}
}
控制台中的结果
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Id: 0.24242492129168425
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB Id: 0.24242492129168425
谁能告诉我是否有办法使用 Angular2 的 DI 机制在同一个组件中注入多个不同的服务实例,或者我应该为这种特殊情况删除 DI 并使用手动构造函数手动创建我的实例?
提前致谢
【问题讨论】:
标签: dependency-injection typescript angular