我们需要使用 InjectionToken 注入一个值,但是我们收到以下错误:
ERROR在遇到错误静态解析符号值。只有初始化的变量和常量可以被引用,因为这变量的值是NE 由模板编译器(在原来的.ts文件位置3:12)EDED,解析符号$在C:/Projekte/Git/KWKPortal/App/src/app/shared/dnn.module.ts,resolvin 克符号的AppModule在C:/Projekte/Git/KWKPortal/App/src/app/app.module.ts,在C解析符号的AppModule:/Projekte/Git/KWKPortal/App/src/app/app.module.ts, RESO lving符号的AppModule在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 :(得分:0)
幸运的是我能够使用工厂来解决这个问题,这里是代码:
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 { }
我不知道是否有更简洁的解决办法,但这解决了原来的问题。