2016-09-21 89 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