Angular 2:向另一个服务注入服务。 (没有提供商错误)

时间:2016-05-11 03:28:13

标签: angular

我想将服务注入其他服务:

@Injectable()

export class Dispatcher {
}


@Injectable()

export class TodoStore {

    constructor(@Inject(Dispatcher) dispatcher:Dispatcher){ 

    }
}

但我总是得到错误:Dispatcher没有提供者!

感谢。

4 个答案:

答案 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');
    }
}