2016-09-21 13 views
5

pracuję na ostatnim zastosowaniu Angular2 których (obecnie) posiada dwa moduły:Angular2 komponenty import/usługi z modułem

  • CoreModule: Zawiera składniki, udostępnionych usług.
  • AppModule: Moduł główny aplikacji

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 {} 

Kiedy próbuję go uruchomić, mam następujące:

BŁĄD w ./src/view/app- module/app.module.ts (11,9): błąd TS2305: Moduł "" /Users/jamdahl/Web/Web-Scratch/Angular2-Express-Mongoose/src/view/core-module/core.module " " nie ma wyeksportowanego elementu" UserService ".

błąd w ./src/view/app-module/app.module.ts (11,22): Błąd TS2305: Moduł „"/Users/jamdahl/Web/Web-scratch/Angular2-ekspresowe Mongoose/src/view/core-module/core.module "' nie ma wyeksportowanego elementu' AuthService '.

błąd w ./src/view/app-module/app.module.ts (11,35): Błąd TS2305: Moduł „"/Users/jamdahl/Web/Web-scratch/Angular2-ekspresowe Mongoose/src/view/core-module/core.module "' nie ma wyeksportowanego elementu' AuthComponent '.

Jakieś pomysły, dlaczego to nie działa? Moim celem jest zdefiniowanie pewnych komponentów/usług w module, które będą ponownie wykorzystywane w innych modułach, które utworzę. Musisz znaleźć właściwy sposób, aby to zrobić ...

Dziękuję za pomoc!

Odpowiedz

9

Usługi nie muszą być dodawane do exports modułu NgModule.

provide nich wewnątrz swojej CoreModule lub jak teraz wewnątrz swojej AppModule, ale importować je z ich oryginalnym pliku ...

lub dodać export {AuthService} from '..File..' do CoreModule.

Możesz tylko import Komponenty i usługi z pliku, gdzie są export wyd. I nie tam, gdzie są w sekcji exports Modułu. Jest to rzecz typopisowa, a nie rzecz kątowa! :)

+4

Jest to bardzo przydatne, ale jestem zdezorientowany. Jaka jest korzyść z używania modułów, jeśli musisz ręcznie importować wszystkie pliki komponentów/usług? – jrdnmdhl

+3

Największe znaczenie miało połączenie tych Komponentów w moduły do ​​kompilacji. I jesteś w stanie leniwych modułów ładujących ... ale nadal musisz zrobić właściwy import, aby go użyć .. :) to jest dość mylące, tak .. – mxii

Powiązane problemy