我有多個應用程序在Ionic 2和3開發。他們共享相同的登錄服務器,並且登錄代碼是相同的所有應用程序,我拆分成一個獨立的git存儲庫。在每個應用的應用/目錄,存在帶有config.ts文件:角模塊訪問主應用程序數據
export const APPNAME = 'appname';
export const API = 'https://api.appname.com';
我包括在app.module.ts登錄模塊作爲角模塊:
@NgModule({
declarations: [
MainApp
],
imports: [
...
LoginModule.forRoot()
]
和登錄。 module.ts是:
import { NgModule, ModuleWithProviders } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AuthService } from './auth.service';
@NgModule({
imports: [CommonModule],
providers: [AuthService]
})
export class LoginModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: LoginModule,
providers: [AuthService]
}
}
}
問題是模塊需要APPNAME和API地址來做登錄的東西。整個模塊獨立於主應用程序,我作爲位於src/providers/login中的git子模塊添加到項目中。但是,當像LoginPage或RegisterPage模塊的頁面組件,我需要這些常量,我做的:
import { AuthService } from '../auth.service';
import { APPNAME, API } from '../../app/config';
@IonicPage()
@Component({
selector: 'page-login',
templateUrl: 'login.html'
})
export class LoginPage {
這是代碼的唯一行是專門引用主要的應用程序。我想通過在主應用中通過forRoot()傳遞config來反轉該引用,但是我不知道如何在模塊的頁面組件中檢索它。我是否應該以某種方式將它們導入到AuthService中,然後通過頁面組件中的服務訪問它們?我怎樣才能做到這一點?