2017-03-10 1 views
2

모듈 외부에서 서비스를 가져 오려고합니다. 다음과 같이각도 : 다른 모듈의 서비스를 사용하십시오.

내가 가지고있는 설정은 다음과 같습니다 내가 app.module.ts

@NgModule({ 
    ... 
    imports: [ FooModule ] 
}); 
... 

이 잘 작동 수입이 푸 모듈

@NgModule({ 
    declarations: [ 
     FooComponent 
    ], 
    exports: [ 
     FooComponent 
    ], 
    providers:[ 
     FooService 
    ] 
}); 
export class FooModule {} 

있습니다.

다음 나는 app.module.ts 내에서 FooService을 가져올, 그래서

@NgModule({ 
    ... 
    providers: [FooService], 
    imports: [ FooModule ] 
}); 
... 

지금까지 응용 프로그램이 여전히 작동 app.module.ts에 선 providers: { FooService }을 움직였다. 마지막 단계는, 내가 가져 오기 경로를 변경, 푸 디렉토리 외부에서 서비스 파일을 복사, 난 서버를 다시 시작하고 지금은 브라우저

EXCEPTION: Uncaught (in promise): Error: Error in :0:0 caused by: No provider for FooService! 

그것은 더 이상 서비스를 찾을 수 없습니다에 오류가 발생합니다.

서비스 파일이 foo 디렉토리에없는 경우 서비스가 누락 된 이유는 무엇입니까? 어떻게 든 고칠 수 있습니까?

답변

4

다음 해결책을 시도했습니다. 그것은 나를 위해 일하고 :

푸 모듈을

@NgModule({ 
    declarations: [ 
     FooComponent 
    ], 
    exports: [ 
     FooComponent 
    ], 
}); 
export class FooModule {} 

app.module.ts

import {Fooservice} from './FooService'; 
@NgModule({ 
    ... 
    imports: [ FooModule ] 
    providers: [FooService], 
}); 
... 

Foo.component.ts

import { Component } from '@angular/core'; 
import { FooService }  from '../FooService'; 

@Component({ 

}) 
export class FooComponent { 

    constructor(public fooservice: FooService) { 
     ... 
    } 
} 
+0

당신은있어 올바른, t 그의 작품, 고마워, 내가 리팩토링 후 다른 파일에서 가져 오기를 제거하는 것을 잊어 버렸어. –

관련 문제