我已经跟随"星座"在我的角度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中的描述在服务中注入服务,并且没有工作
但是,只要我的项目保持小规模,就可以列出组件中所有服务依赖项,但这并不是真正可扩展的。
答案 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
。