注射器中的InjectionToken为空

时间:2017-09-11 18:20:15

标签: angular angular-cli

当我提供我的应用程序(ng服务)时,ConfigurationService.coucou()返回预期值。 但是如果我在AppModule的构造函数中使用--prod(ng serve --prod),window ['config'] ['coucou'],我得到了期望值,但valueConfigurationService.coucou()返回一个空字符串。

有什么想法吗?

AppModule:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';

import { AppComponent } from './app.component';

import { ConfigurationService, COUCOU } from './configuration.service';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule
  ],
  providers: [ConfigurationService,{ provide: COUCOU, useValue: window['config']['coucou'] }],
  bootstrap: [AppComponent]
})
export class AppModule { }

configuration.service:

import { Injectable, Inject, InjectionToken } from '@angular/core';

export const COUCOU = new InjectionToken<string>('coucou');

@Injectable()
export class ConfigurationService {
    private _coucou: string;

    get coucou(): string {
        return this._coucou;
    }

    constructor( @Inject(COUCOU) coucou: string) {
        console.log('ConfigurationService.coucou : ' + coucou);
        this._coucou = coucou ? coucou : "";
    }
}

1 个答案:

答案 0 :(得分:0)

我想你的问题就在这里:

 this._coucou = coucou ? coucou : "";

它应该是这样的:

 this._coucou === coucou ? coucou : "";
相关问题