2017-02-17 3 views
3

Я пытаюсь получить пользователя из моего модуля LoginService в профиль. Мой модуль профиля состоит из 3 компонентов. Loginservice находится в другом компоненте внутри AppModule. Это метод, чтобы получить пользователя в login.service.ts:Как импортировать сервис из другого модуля с помощью углового2?

getCurrentUser() { 
    return this._storage.get<User>(this.USER_KEY); 
    }// End getCurrentUser() 

Это мой app.module.ts:

import { SharedModule } from './shared/SharedModule'; 
import 'hammerjs'; 

import { BrowserModule } from '@angular/platform-browser'; 
import { NgModule } from '@angular/core'; 
import { FormsModule } from '@angular/forms'; 
import { HttpModule } from '@angular/http'; 
import { MaterialModule } from '@angular/material'; 
import { FlexLayoutModule } from "@angular/flex-layout/flexbox"; 

import { LocalStorageModule } from 'angular-2-local-storage'; 
import { AppComponent } from './app.component'; 
import { LoginComponent } from './modules/login/login.component'; 
import { Angular2RoutingModule } from './app.routing'; 
import { KeysPipe } from './pipes/keys.pipe'; 
import { AdminComponent } from './modules/admin/admin.component'; 
import { AdminHomeComponent } from './modules/admin/admin-home/admin-home.component'; 
import { ProfileComponent } from './modules/profile/profile.component'; 

@NgModule({ 
    declarations: [ 
    AppComponent, 
    LoginComponent, 
    ], 
    imports: [ 
    SharedModule, 
    BrowserModule, 
    FormsModule, 
    HttpModule, 
    Angular2RoutingModule, 
    MaterialModule.forRoot(), 
    FlexLayoutModule, 
    LocalStorageModule.withConfig({ 
     prefix: 'rsm', 
     storageType: 'localStorage' 
    }) 
    ], 
    providers: [], 
    bootstrap: [AppComponent], 
    exports: [] 
}) 
export class AppModule { } 

Это мой profile.module.ts:

import { MaterialModule } from '@angular/material'; 
import { profileRouting } from './profile.routing'; 
import { NgModule } from '@angular/core'; 
import { CommonModule } from '@angular/common'; 

import { ProfileComponent } from './profile.component'; 
import { ProfileHomeComponent } from './profile-home/profile-home.component'; 
import { ProfileSecurityComponent } from './profile-security/profile-security.component'; 
import { ProfileSettingsComponent} from './profile-settings/profile-settings.component'; 
import { FlexLayoutModule} from '@angular/flex-layout/flexbox'; 

@NgModule({ 
    declarations: [ 
     ProfileComponent, 
     ProfileHomeComponent, 
     ProfileSecurityComponent, 
     ProfileSettingsComponent, 
    ], 

    imports: [profileRouting, CommonModule, MaterialModule.forRoot(),FlexLayoutModule], 
    providers: [], 
}) 
export class ProfileModule { 

} 

Как я использую этот метод в loginservice внутри компонента в profilemodule?

+0

Вы пытались добавить службу входа в систему как поставщик в AppModule? –

+0

https://angular.io/docs/ts/latest/guide/dependency-injection.html#!#injector-providers –

+0

Да. Но когда я добавляю службу входа в систему в качестве провайдера в appModule, он дает эту ошибку.Error : Тип LoginComponent является частью деклараций из 2 модулей: AppModule и ProfileModule! Пожалуйста, подумайте о перемещении LoginComponent в более высокий модуль, который импортирует AppModule и ProfileModule. Вы также можете создать новый NgModule, который экспортирует и включает LoginComponent, затем импортирует этот NgModule в AppModule и ProfileModule. – SujaniWickramasinghe

ответ

1

Начните с отделения логина от модуля приложения. Создайте модуль входа.

Теперь, поскольку вы хотите использовать что-то из совершенно другого модуля. Вам нужно будет импортировать этот модуль.

Таким образом, вы должны

  • импорт модуля Войти в модуль профиля
  • импорт Войти службы в профиле компонента

и что должны делать это.

Это как импорт HttpModule, а затем импорт службы Http перед их использованием.

Смежные вопросы