在我的库中,我有一个带有以下代码的服务:
import { Inject, Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { DataInjectorModule } from '../../data-injector.module';
// @dynamic
@Injectable()
export class RemoteDataService<T> {
@Inject('env') private environment: any = {};
public type: new () => T;
constructor(
model: T,
) {
this.http = DataInjectorModule.InjectorInstance.get(HttpClient);
}
// ...
}
data-injector.module
(现有原因只是避免循环依赖):
import { NgModule, Injector } from '@angular/core';
// @dynamic
@NgModule({
declarations: [],
imports: [],
providers: [],
exports: [],
})
export class DataInjectorModule {
static InjectorInstance: Injector;
constructor(injector: Injector) {
DataInjectorModule.InjectorInstance = injector;
}
}
import { ModuleWithProviders } from '@angular/compiler/src/core';
import { NgModule, Injector } from '@angular/core';
import { DataInjectorModule } from './data-injector.module';
import { RemoteDataService } from './services/remote-data/remote-data.service';
// @dynamic
@NgModule({
declarations: [],
imports: [
DataInjectorModule,
],
providers: [],
exports: [],
})
export class DataCoreModule {
static InjectorInstance: Injector;
constructor(injector: Injector) {
DataCoreModule.InjectorInstance = injector;
}
public static forRoot(environment: any): ModuleWithProviders {
return {
ngModule: DataCoreModule,
providers: [
RemoteDataService,
{ provide: 'env', useValue: environment }
]
};
}
}
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { DataCoreModule } from 'data-core';
import { AppRoutingModule } from './app-routing.module';
import { environment } from 'src/environments/environment';
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent,
],
imports: [
BrowserModule,
AppRoutingModule,
DdataCoreModule.forRoot(environment),
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
Error: Can't resolve all parameters for RemoteDataService: (?).
at getUndecoratedInjectableFactory (core.js:11338)
at injectableDefOrInjectorDefFactory (core.js:11328)
at providerToFactory (core.js:11371)
at providerToRecord (core.js:11358)
at R3Injector.processProvider (core.js:11256)
at core.js:11230
at core.js:1146
at Array.forEach (<anonymous>)
at deepForEach (core.js:1146)
at R3Injector.processInjectorType (core.js:11230)
错误:无法解析RemoteDataService的所有参数:(?)
错误说明了一切。Angular无法解析RemoteDataService中的所有构造函数参数。实例化此服务时,它需要所需的参数。
您可以通过InjectionToken提供所需的依赖项,详细信息请参见此答案。
import { Component, Inject } from "@angular/core";
import { RemoteDataService } from "./custom/remote-data.service";
export class A {}
export class B {}
@Component({
selector: "my-app",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.css"],
providers: [
{ provide: "env", useValue: {} },
{
provide: "ARemoteDataService",
useFactory: () => new RemoteDataService<A>(new A())
},
{
provide: "BRemoteDataService",
useFactory: () => new RemoteDataService<B>(new B())
}
]
})
export class AppComponent {
constructor(
@Inject("ARemoteDataService")
private aRemoteDataService: RemoteDataService<A>,
@Inject("BRemoteDataService")
private bRemoteDataService: RemoteDataService<B>
) {}
}
// @Inject('env') private environment: any = {};
constructor(model: T) {
this.environment = DataInjectorModule.InjectorInstance.get("env");
}
遵循spring指南构建了eureka服务器、spring cloud gateway和一个示例rest服务。 但是,网关无法使用eureka服务器的服务名称检索URL。网关和服务的注册似乎没有问题。当提供实际endpoint而不是服务ID时,它工作得很好。我无法理解为什么网关不从尤里卡解析服务id。我是否遗漏了任何配置? 错误消息: 尤里卡服务器 春云网关 Rest服务
在我的ASP. NET Core应用程序中,我收到以下错误: 无效操作异常:在尝试激活“城市”时无法解析类型“城市”的服务。模型。IRepository。控制器。HomeController。 我是家庭控制器,我试图将城市的getter传递给视图,如下所示: 我有一个文件存储库。cs包含一个接口及其实现,如下所示: 我的启动类包含从模板生成的默认代码。我做了任何更改:
我有一个Angular2项目2.0.0,在试图加载该项目时,浏览器中出现了以下错误: 误差 Metadata_Resolver.js:508未捕获错误:无法解析CustomerService:(AngularFireDatabase,?,Token_FirebaseApp)的所有参数。(…)CompileMetadataResolver.getDependenciesMetadata@metada
我已经在Angular中构建了一个基本的应用程序,但是我遇到了一个奇怪的问题,我不能将服务注入到我的组件中。然而,它将精细注入我创建的其他三个组件中的任何一个。 首先,这是一项服务: 以及拒绝使用的组件: 我在浏览器控制台中遇到的错误如下: 异常:无法解析HeaderComponent:(?)的所有参数。 我在引导功能中有服务,所以它有一个提供者。我似乎可以将它注入到我的任何其他组件的构造函数中,
@可在Service1和service2中注入 tsconfig.json emitDecoratorMetadata设置为true 在NGModule的提供者部分注册了Service1和Service2 如果有关系的话:我正在构建一个Ionic2RC0应用程序。以下是重要的文件: app.module.ts
问题内容: 我想像本例一样启用蓝牙。 但是,我的课程不是Activity,而是Service,因此我不能调用startActivityForResult。我怎么解决这个问题?。我知道还回答了其他问题,例如 使用非活动中的startActivityForResult 但这不能解决我的问题,因为我的应用程序由服务组成,而没有别的什么。 问题答案: 不幸的是你不能那样做。 我发现(破解)的唯一解决方案是