2017-05-31 3 views
0

我々はInjectionTokenを使用して値を挿入する必要がありますが、我々は次のエラーを取得している:ここ角度使っInjectionTokenエラー

ERROR in Error encountered resolving symbol values statically. Only initialized variables and constants can be referenced because the value of this variable is ne eded by the template compiler (position 3:12 in the original .ts file), resolving symbol $ in C:/Projekte/Git/KWKPortal/App/src/app/shared/dnn.module.ts, resolvin g symbol AppModule in C:/Projekte/Git/KWKPortal/App/src/app/app.module.ts, resolving symbol AppModule in C:/Projekte/Git/KWKPortal/App/src/app/app.module.ts, reso lving symbol AppModule in C:/Projekte/Git/KWKPortal/App/src/app/app.module.ts

たちは、この値が注入されるように提供する方法である:

import { SF, $, dnn } from './shared/dnn.module'; 

@NgModule({ 
    declarations: [ 
    AppComponent 
    ], 
    imports: [ 
    BrowserModule, 
    FormsModule, 
    HttpModule 
    ], 
    providers: [ 
    { provide: SF, useValue: $.ServicesFramework(dnn.getVars().ModuleId) } 
    ], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 

ここには、私たちのコードdnn.moduleがあります。

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

export let $: any; 
export let dnn: any; 
export let SF = new InjectionToken<any>('sf'); 

なぜこれが起こっているのだろうか?この場合、useValueは適切ではありませんか?

答えて

0

Fortunally私は工場を使用して使用してこの問題を解決することができた、ここでのコードは次のとおりです。

export function servicesFrameworkFactory() { 
    return $.ServicesFramework(dnn.getVars().ModuleId); 
} 

@NgModule({ 
    declarations: [ 
    AppComponent 
    ], 
    imports: [ 
    BrowserModule, 
    FormsModule, 
    HttpModule 
    ], 
    providers: [{ 
    provide: SF, 
    useFactory: servicesFrameworkFactory, 
    deps: [] 
    }], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 

これを固定するきれいな方法があるかどうか、私は知りませんが、これは元のスレッドを解きます。