2

在带有 Angular 5 的 Ionic 3 中,我试图在一个app.config.ts文件中定义我所有的外部 API 密钥。

我必须声明一个类,否则我会收到 ngc 引发的 AOT 错误。

这是我的 app.config.ts

import { Injectable } from '@angular/core';

@Injectable()
export class AppConfig {
  public ONESIGNAL_API_KEY: string;
  public FIREBASE_CONFIG: any;
  public MIXPANEL_TOKEN: string;

  constructor() {
    this.ONESIGNAL_API_KEY = 'myoskey';
    this.FIREBASE_CONFIG = {
      apiKey: "myfbkey",
      authDomain: "myfbdomain
      };
    this.MIXPANEL_TOKEN = 'mymptoken';
  }
}

我可以将它注入到其他类的构造函数中,但 firebase 必须在app.module.ts. 所以我尝试执行以下操作//配置

import {AppConfig} from './app-config';
...
imports: [
    BrowserModule,
    HttpClientModule,
    IonicModule.forRoot(MyApp, {
      backButtonText: '',
      tabsHideOnSubPages: true,
      //scrollAssist: true,
      //autoFocusAssist: true
    }),
    IonicStorageModule.forRoot(),
    IonicImageLoader.forRoot(),
    AngularFireModule.initializeApp(AppConfig.FIREBASE_CONFIG),
    ....

不幸的是,我收到以下错误 Property 'FIREBASE_CONFIG' does not exist on type 'typeof AppConfig'.

如何FIREBASE_CONFIG在这个app.config文件中声明并直接使用它app.module

我试图像这样在构造函数之前直接初始化变量,但结果相同

import { Injectable } from '@angular/core';

@Injectable()
export class AppConfig {
  public ONESIGNAL_API_KEY: string;
  public FIREBASE_CONFIG: any = {
      apiKey: "myfbkey",
      authDomain: "myfbdomain
      };
  public MIXPANEL_TOKEN: string;

  constructor() {
    this.ONESIGNAL_API_KEY = 'myoskey';
    this.MIXPANEL_TOKEN = 'mymptoken';
  }
}

任何想法?

4

1 回答 1

1

你可以使用枚举:

export enum AppConfig {
    ONESIGNAL_API_KEY = 'myoskey',
    MIXPANEL_TOKEN = 'mymptoken'
}

export const FIREBASE_CONFIG = {
    apiKey : "myfbkey",
    authDomain : "myfbdomain"
}

然后像以前一样使用它:

import {AppConfig ,FIREBASE_CONFIG  } from './config';
...
imports: [
    //...
    AngularFireModule.initializeApp(FIREBASE_CONFIG)

注意:您收到该错误是因为您正在尝试访问AppConfig.FIREBASE_CONFIG并且FIREBASE_CONFIGAppConfig类的非静态属性。

于 2017-12-09T23:28:36.853 回答