Javascript ng生成上的app.module中出现单例服务错误

Javascript ng生成上的app.module中出现单例服务错误,javascript,angular,angular-cli,Javascript,Angular,Angular Cli,我正在使用一个将在所有组件之间共享的单例服务,我创建了一个CoreModule,其静态类为: static forRoot(config: GlobalServiceConfig): ModuleWithProviders { return { ngModule: CoreModule, providers: [ { provide: GlobalServiceConfig, useValue: config } ] };

我正在使用一个将在所有组件之间共享的单例服务,我创建了一个CoreModule,其静态类为:

static forRoot(config: GlobalServiceConfig): ModuleWithProviders {
    return {
      ngModule: CoreModule,
      providers: [
        { provide: GlobalServiceConfig, useValue: config }
      ]
    };
  }
在app.module.ts中

export declare var Globals: GlobalServiceConfig;
export const g = Globals;
Globalsdict是在index.html中创建的,值来自后端。 现在我在app.module.ts中使用这个Globals变量,并将这个初始值提供给CoreModule.forRoot,如下所示:

imports: [
    BrowserModule,
    SharedModule,
    LoginModule,
    ShippingModule,
    PaymentModule,
    CoreModule.forRoot(g),
    AppRoutingModule,
  ],
第一次ng构建失败,与ng serve/watch相同,但只是第一次。如果我做了任何更改,该应用程序将按预期运行良好,并获得初始值。但无法构建应用程序。错误状态为:

静态解析符号值时遇到错误。只有 可以引用初始化的变量和常量,因为 模板编译器需要此变量的值(位置 在原始.ts文件中为29:20),在 E:/repos/emtex/mobilepayment/src/app/app.module.ts,解析符号g 在E:/repos/emtex/mobilepayment/src/app/app.module.ts中,解析 符号AppModule in E:/repos/emtex/mobilepayment/src/app/app.module.ts,解析符号 E中的AppModule:/repos/emtex/mobilepayment/src/app/app.module.ts, 解析中的符号AppModule E:/repos/emtex/mobilepayment/src/app/app.module.ts

ng--版本

@angular/cli: 1.0.0
node: 6.9.1
os: win32 x64
@angular/common: 4.0.0
@angular/compiler: 4.0.0
@angular/core: 4.0.0
@angular/forms: 4.0.0
@angular/http: 4.0.0
@angular/platform-browser: 4.0.0
@angular/platform-browser-dynamic: 4.0.0
@angular/router: 4.0.0
@angular/animations: 4.0.0
@angular/cli: 1.0.0
@angular/compiler-cli: 4.0.0

错误很明显,您的
g
变量未初始化,因此无法静态解析。您说过
g
来自后端,但angular无法知道
g
何时解析(值从后端返回)

您可以通过一个承诺或一个可观察的方法来处理这个问题,在这个值返回之前,您不会引导


或者您可以将提供商更改为
useFactory
,将
g
更改为承诺或可观察,然后在您的服务工厂等待
g
得到解决。请参见此处的factory provider angular文档:

您使用的angular的哪个版本?@angular/cli:1.0.0节点:6.9.1操作系统:win32 x64@angular/common:4.0.0@angular/compiler:4.0.0@core:4.0.0@angular/forms:4.0@angular/platform浏览器:4.0.0@angular/platform浏览器动态:4.0.0@angular/router:4.0.0.0@angular/animations:4.0.0@angular/cli:1.0.0@angular/compiler cli:4.0.0是您的
angular cli
beta版(或)rc?它的最终版本@Davidr你能在你的静态类中发布你的
@NgModule({providers:..})
声明吗(如果你有什么)