在角度2中没有HttpService的提供者

时间:2016-07-13 07:49:44

标签: angular angular2-services

我已经跟随"星座"在我的角度2 /离子2项目中。

Component1 -> Service1 -> Service3
Component2 -> Service2 -> Service3

(其中 - >表示类似"使用"或"调用")

如果不在组件的providers数组中注入Service3,我总是面临错误

No Provider for Service3

有没有办法将服务注入角度2的服务而不必将所有服务注入到组件中?分别如何管理依赖项而不必在组件中明确列出所有依赖项?

import {Service1} from  '../../../providers/service1';
import {Service2} from  '../../../providers/Service3';

@Component({
    templateUrl: '...',
    providers: [Service1, Service3]}) // <= here I would like to not list Service2

export class Component1 {
}

我尝试按照Inject services in another service angular 2中的描述在服务中注入服务,并且没有工作

但是,只要我的项目保持小规模,就可以列出组件中所有服务依赖项,但这并不是真正可扩展的。

2 个答案:

答案 0 :(得分:0)

问题由@rinukkusu解决了。他没有在很多地方多次注入服务,而是建议注入所有这些&#34;共享&#34;应用程序的根目录中的服务(例如我的示例中的Service3)。

我仍然需要列出所有服务依赖项,至少包括一次组件中的服务,但至少我不必复制我的代码。

所以在app.ts

import {Service2} from  '../../../providers/service2';

@Component({
templateUrl: 'build/app.html',
providers: [Service2]
})

例如服务(例如我的例子中的Service1)

import {Service2} from  './service2';

@Injectable()
export class Service1 {

constructor(private service2:Service2) {

}

答案 1 :(得分:0)

注入在组件内部分层次地工作,因此如果您希望在同一层次结构级别中使用服务,则需要在该级别之上提供服务。在您的情况下,您需要在应用程序引导程序中提供此Service3