首先,它是我的模块中providers数组的一部分:
const MyDepServiceInjectionToken = new InjectionToken('comment', {
providedIn: 'root',
factory: myDepServiceFactory,
});
...
providers: [{
multi: true,
deps: [MyDepServiceInjectionToken],
provide: HTTP_INTERCEPTORS,
useClass: HttpResponseInterceptor,
}],
我不知道为什么,但是,如果我仅使用MyDepService类而不是注入令牌,那么一切都很好-项目构建正确。另一方面,如果我将注入令牌与服务型工厂功能 ionic build --prod 一起使用,则会失败并显示错误:
ERROR Error: Uncaught (in promise): NullInjectorError: StaticInjectorError[InjectionToken HTTP_INTERCEPTORS -> function(){return{ngModule:t,providers:[{multi:!0,deps:[fr.a],provide:Ve.a,useClass:dr},{multi:!0,deps:[vr],provide:Ve.a,useClass:mr}]}}]:
StaticInjectorError(Platform: core)[InjectionToken HTTP_INTERCEPTORS -> function(){return{ngModule:t,providers:[{multi:!0,deps:[fr.a],provide:Ve.a,useClass:dr},{multi:!0,deps:[vr],provide:Ve.a,useClass:mr}]}}]:
NullInjectorError: No provider for function(){return{ngModule:t,providers:[{multi:!0,deps:[fr.a],provide:Ve.a,useClass:dr},{multi:!0,deps:[vr],provide:Ve.a,useClass:mr}]}}!
NullInjectorError: StaticInjectorError[InjectionToken HTTP_INTERCEPTORS -> function(){return{ngModule:t,providers:[{multi:!0,deps:[fr.a],provide:Ve.a,useClass:dr},{multi:!0,deps:[vr],provide:Ve.a,useClass:mr}]}}]:
StaticInjectorError(Platform: core)[InjectionToken HTTP_INTERCEPTORS -> function(){return{ngModule:t,providers:[{multi:!0,deps:[fr.a],provide:Ve.a,useClass:dr},{multi:!0,deps:[vr],provide:Ve.a,useClass:mr}]}}]: (...)
哪里有问题?
答案 0 :(得分:0)
用于创建依赖项令牌的正确格式是。我不知道是否可以像您的代码那样省略构造函数。
const MY_SERVICE_TOKEN = new InjectionToken<MyService>('Manually constructed MyService', {
providedIn: 'root',
factory: myDepServiceFactory,
});
答案 1 :(得分:0)
您是否正在设备或浏览器上测试代码?我认为浏览器不支持令牌。该服务只能在设备上使用