2016-09-21 93 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的根模塊

錯誤在./src/view/app- module/app.module.ts(11,9):error TS2305: Module '「/Users/jamdahl/Web/Web-Scratch/Angular2-Express-Mongoose/src/view/core-module/core.module」 ' 沒有導出成員'UserService'。

ERROR在 ./src/view/app-module/app.module.ts(11,22):錯誤TS2305:模塊 「「/用戶/ jamdahl /網絡/ Web的劃痕/ Angular2-Express- Mongoose/src/view/core-module/core.module「' 沒有導出成員'AuthService'。

ERROR在 ./src/view/app-module/app.module.ts(11,35):錯誤TS2305:模塊 「「/用戶/ jamdahl /網絡/ Web的劃痕/ Angular2-Express- Mongoose/src/view/core-module/core.module「' 沒有導出成員'AuthComponent'。

任何想法爲什麼這不起作用?我的目標是在模塊中定義某些組件/服務,以便在我將創建的其他模塊中重用。需要找出正確的方法來做到這一點...

謝謝你的幫助!

回答

9

服務不需要被添加到NgModule的exports

provide他們你CoreModule裏面或像現在您的AppModule內,但是從他們原來的文件中導入...

或添加export {AuthService} from '..File..'您CoreModule。

您只能import組件和服務文件,他們是export編輯。而不是他們在模塊的exports部分..這是一個打字稿的東西,而不是一個角的東西! :)

+4

這是非常有用的,但我很困惑。如果您必須手動導入所有組件/服務文件,使用模塊有什麼優勢? – jrdnmdhl

+3

最大的一點是將這些組件綁定到編譯模塊中。你可以懶惰加載模塊..但你仍然必須做正確的導入使用它.. :)它是相當混亂,是的.. – mxii