Angular 2: Inject Service для другой службы. (Нет ошибки поставщика)
Я хочу добавить службу к другой службе:
@Injectable()
export class Dispatcher {
}
@Injectable()
export class TodoStore {
constructor(@Inject(Dispatcher) dispatcher:Dispatcher){
}
}
Но я всегда получаю сообщение об ошибке: Нет провайдера для диспетчера!
Спасибо.
Ответы
Ответ 1
Вам нужно provide
выполнить свою службу. Пожалуйста, обратитесь к angular2 docs
Вы можете указать его в методе начальной загрузки:
bootstrap(AppComponent,[TodoStore,Dispatcher]);
или компонент приложения:
@Component({
...
providers:[TodoStore,Dispatcher]
}
...
Или в любом другом компоненте, в зависимости от ваших потребностей.
Кроме того, вам не нужно @Inject(Dispatcher)
в конструкторе. Он в основном такой же, как
constructor(dispacher:Dispatcher){
}
О да, добро пожаловать в SO:)
Ответ 2
Спасибо за ответ.
Поскольку это не компонент, решение @Component (...) не применяется.
bootstrap(AppComponent,[TodoStore,Dispatcher]);
работает. Но это делает это main.ts
центральным местом.
Ответ 3
Массив поставщиков доступен в @NgModule. Вы можете предоставить свою услугу, объявив свою службу в этом массиве.
@NgModule({
declarations:[...],
imports:[...],
providers: [MyCustomService],
bootstrap:[AppComponent]
})
Ответ 4
Попробуйте следующее:
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');
}
}