2016-09-21 6 views
5

에서 서비스 :Angular2 가져 오기 구성 요소/나는 (현재) 두 개의 모듈이있는 Angular2 최종 응용 프로그램 일하고 모듈

  • CoreModule : 포함 공유 구성 요소, 서비스.
  • AppModule :

    /** 
    * Created by jamdahl on 9/21/16. 
    */ 
    
    // Angular Imports 
    import {NgModule} from '@angular/core'; 
    import {BrowserModule} from '@angular/platform-browser'; 
    import {HttpModule} from '@angular/http'; 
    import {FormsModule, ReactiveFormsModule} from '@angular/forms'; 
    import {CoreModule} from '../core-module/core.module'; 
    import {UserService, AuthService, AuthComponent} from '../core-module/core.module'; 
    
    // Components 
    import {HomePageComponent} from './components/home-page.component'; 
    
    //import {enableProdMode} from '@angular/core'; 
    //enableProdMode(); 
    
    @NgModule({ 
        imports: [ 
         BrowserModule, 
         HttpModule, 
         FormsModule, 
         ReactiveFormsModule, 
         CoreModule 
        ], 
        declarations: [ 
         AuthComponent, 
         HomePageComponent 
        ], 
        providers: [ 
         AuthService, 
         UserService 
        ], 
        bootstrap: [ 
         HomePageComponent 
        ] 
    }) 
    export class AppModule {} 
    

    CoreModule : 나는 그것을 실행하려고하면

    /** 
    * Created by jamdahl on 9/21/16. 
    */ 
    
    // Angular imports 
    import {NgModule} from '@angular/core'; 
    import {BrowserModule} from '@angular/platform-browser'; 
    import {HttpModule} from '@angular/http'; 
    import {FormsModule, ReactiveFormsModule} from '@angular/forms'; 
    
    // Class imports 
    import {User} from './classes/user.class'; 
    import {Alert} from './classes/alert.class'; 
    
    // Service imports 
    import {AuthService} from './services/auth.service'; 
    import {UserService} from './services/user.service'; 
    
    // Component imports 
    import {AuthComponent} from './components/auth.component'; 
    import {SignInComponent} from './components/signin.component'; 
    import {SignUpComponent} from './components/signup.component'; 
    
    //import {enableProdMode} from '@angular/core'; 
    //enableProdMode(); 
    
    @NgModule({ 
        imports: [ 
         BrowserModule, 
         HttpModule, 
         FormsModule, 
         ReactiveFormsModule 
        ], 
        declarations: [ 
         AuthComponent, 
         SignInComponent, 
         SignUpComponent 
        ], 
        providers: [], 
        exports: [ 
         User, 
         Alert, 
         AuthService, 
         UserService, 
         AuthComponent 
        ] 
    }) 
    export class CoreModule {} 
    

    , 내가 얻을 다음

    응용 프로그램

AppModule의 루트 모듈

ERROR in ./src/view/app- module/app.module.ts (11,9) : 오류 TS2305 : 모듈 ' "/Users/jamdahl/Web/Web-Scratch/Angular2-Express-Mongoose/src/view/core-module/core.module" ' 에는 내 보낸 멤버'UserService '가 없습니다.

./src/view/app-module/app.module.ts (11,22)에

ERROR : 오류 TS2305 : 모듈 ' "/ 사용자/jamdahl/웹/웹 스크래치/Angular2 - 익스프레스 Mongoose/src/view/core-module/core.module " ' 에는 내 보낸 회원'AuthService '가 없습니다.

./src/view/app-module/app.module.ts (11,35)에

ERROR : 오류 TS2305 : 모듈 ' "/ 사용자/jamdahl/웹/웹 스크래치/Angular2 - 익스프레스 Mongoose/src/view/core-module/core.module " ' 에는 내 보낸 멤버'AuthComponent '가 없습니다.

왜 이것이 작동하지 않는가? 내 목표는 모듈에서 특정 구성 요소/서비스를 정의하여 다른 모듈에서 재사용하도록하는 것입니다. 이 작업을 수행하는 올바른 방법을 찾아야 ...

어떤 도움을 주셔서 감사합니다!

답변

9

NgModule의 exports에 서비스를 추가 할 필요가 없습니다. 당신의 CoreModule의 내부 또는 지금 AppModule의 내부와 같은

provide 그 하지만, 원래 파일에서 가져올 ...

아니면 CoreModule에 export {AuthService} from '..File..'를 추가합니다.

import 파일에서 구성 요소 및 서비스 export ed. 그리고 그들이 모듈의 exports 섹션에있는 곳이 아닙니다. 이것은 Typescript의 것이지 각도적인 것이 아닙니다! :)

+4

이것은 매우 유용하지만 혼란 스럽습니다. 모듈을 사용할 때 어떤 이점이 있습니까? 어쨌든 모든 구성 요소/서비스 파일을 수동으로 가져와야하는 경우? – jrdnmdhl

+3

가장 큰 요점은 이러한 구성 요소를 컴파일 용 모듈로 묶는 것이 었습니다. 그리고 당신은 게으른로드 모듈을 할 수 있습니다.하지만 당신은 여전히 ​​그것을 사용하기 위해 올바른 임포트를해야합니다. :) 그것은 매우 혼란 스럽습니다. 예. – mxii