내가 응용 프로그램 모듈 (내 문제를 보여주기 위해 만든) 단일 구성 요소 응용 프로그램을 가지고 있고, 점점 다음과 같은 오류 :Angular2 "서비스 제공 업체 없음!" 오류 공급자가 추가됩니다 @NgModule
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { UserService } from './components/common/userservice';
@NgModule({
imports: [
BrowserModule,
],
declarations: [
AppComponent
],
providers: [UserService],
bootstrap: [AppComponent],
entryComponents: []
})
export class AppModule {
}
코드 : AppModule에 대한
Error in ./AppComponent class AppComponent_Host - inline template:0:0 caused by: No provider for UserService! ; Zone: <root> ; Task: Promise.then ; Value:
코드
import { Component} from '@angular/core';
import { UserService} from './userservice';
@Component({
selector: 'App',
template: `<h3>App component</h3>
user name: {{userName}}
`,
providers: []
})
export class AppComponent {
userName: string;
constructor(userService: UserService) {
this.userName = userService.userName;
}
}
내 UserService 코드 :
내 AppComponent에 대한import { Injectable, EventEmitter } from '@angular/core';
@Injectable()
export class UserService {
obs$: EventEmitter<any> = new EventEmitter<any>()
userName = 'Sherlock Holmes';
}
이제 UserService를 AppComponent에 공급자로 추가하면 문제가 해결됩니다. 하지만 전 응용 프로그램에서 내 서비스의 인스턴스를 하나만 원하기 때문에 그러고 싶지 않습니다. subModules (피쳐 모듈)에서도.
내 이해에 따르면 모듈 수준의 공급자로 서비스를 추가하면 모듈의 모든 구성 요소에 서비스를 추가 할 수 있습니다.
여기 예를 들어 보았습니다.
는 angular2 버전을 사용하고 있습니다 : "2.0.0"
귀하의'UserService'; '@Injectable()'으로 장식되어 있나? (정확히 Plunker의 예제가 아닌 한 ...) – msanford
또한 가져 오기 경로가 잘못되었을 수 있습니다. 아래에있는 하나의'/ Common'과'/ common'을 사용합니다 ... – msanford
@msanford post updated, User 서비스가 추가되었습니다. 가져온 클래스가 Visual Studio Intellisense에 나타나기 때문에 경로는 괜찮습니다. –