我想将服务注入其他服务:
@Injectable()
export class Dispatcher {
}
@Injectable()
export class TodoStore {
constructor(@Inject(Dispatcher) dispatcher:Dispatcher){
}
}
但我总是得到错误:Dispatcher没有提供者!
感谢。
答案 0 :(得分:32)
您需要在某处provide
提供服务。请参阅angular2 docs
您可以在bootstrap方法中提供它:
bootstrap(AppComponent,[TodoStore,Dispatcher]);
或应用组件:
@Component({
...
providers:[TodoStore,Dispatcher]
}
...
或在任何其他组件中,根据您的需要。
此外,您不需要在构造函数中@Inject(Dispatcher)
。它与
constructor(dispacher:Dispatcher){
}
哦,是的,欢迎来到SO :)。
答案 1 :(得分:6)
感谢回复。
由于它不是Component,因此@Component(...)解决方案不适用。
bootstrap(AppComponent,[TodoStore,Dispatcher]);
解决方案有效。但这使main.ts
成为一个中心位置。
答案 2 :(得分:0)
@NgModule中提供了provider数组。您可以通过在该阵列中声明您的服务来提供服务。
@NgModule({
declarations:[...],
imports:[...],
providers: [MyCustomService],
bootstrap:[AppComponent]
})
答案 3 :(得分:-7)
试试这个:
myMainService.ts
import { myOtherService } from 'myOtherService';
export class myMainService {
constructor() {
let myOtherService = new myOtherService();
}
}
myOtherService.ts
export class myOtherService {
constructor() {
console.log('service was imported');
}
}