我想将服务注入其他服务。我没有注入标准角度服务(Http等)的任何问题,但是当我尝试注入自己的服务时,我得到了一个例外。
示例:
为MyService:
import {Injectable, Inject} from 'angular2/core';
import {AnotherService} from '../../services/another.service';
@Injectable()
export class MyService {
constructor(Inject(AnotherService) private anotherService: AnotherService) {
console.log(this.anotherService.get());
}
}
AnotherService:
import {Injectable} from 'angular2/core';
@Injectable()
export class AnotherService {
constructor() { }
get() { return 'hello'); }
}
当我尝试使用MyService时,我得到EXCEPTION: No provider for AnotherService!
我尝试使用constructor(private anotherService: AnotherService)
,仍然会抛出异常。
谢谢!
答案 0 :(得分:5)
您应该阅读Angular 2文档。您在这里的角度文档中解释了您的确切问题:https://angular.io/docs/ts/latest/guide/dependency-injection.html#when-the-service-needs-a-service
您必须将服务添加到提供者数组。您可以在不执行此操作的情况下使用Http的唯一原因是因为Ionic将它放在提供程序数组上。如果你使用的是vanilla Angular 2,你仍然需要将HTTP_PROVIDERS添加到providers数组中。
作为旁注,您不需要在构造函数中使用Inject,您可以这样做:
constructor(private anotherService: AnotherService) {
console.log(this.anotherService.get());
}