我可以使用一点帮助。
上下文我正在为身份验证服务创建一个角度5模块。
如何将POJO作为参数传递给类?
请参阅下面的答案。
<击> 我需要在此auth服务中使用HttpClient
我收到此错误:
错误:无法解析AuthService的所有参数:([object Object],?)。
[object Object]是angular 5 HttpClient
击>
有人可以解释为什么我收到此错误以及如何解决此问题?
@NgModule()
export class AuthtModule {
static forRoot(params?: iParams) {
return {
ngModule: AuthModule,
provides: [
HttpClient,
{
provide: AuthService,
useFactory: setupAuthService,
deps: [ HttpClient, params ]
}
],
imports: [ HttpClientModule ],
exports: [ AuthService ]
}
}
}
提前致谢。 干杯
答案 0 :(得分:0)
我想出了如何做到这一点,因为事实证明问题在于第二个参数(因此问号)不是第一个参数。发生此错误的原因是,为了将参数传递到类中,必须首先将它们转换为可注入的。
这是你如何做到的。
首先使用参数
创建一个类模型FOO-params.model.ts
export class FooParams {
public foo1: string;
public foo2: number;
}
然后在Module类属性中设置类FooParams以使用作为POJO的值
app.module.ts
import { HttpClientModule, HttpClient } from '@angular/common/http';
import { FooParams } from './foo-params';
@NgModule({
imports : [ HttpClientModule ],
providers: [{
HttpClient
{ provider: FooParams, useValue: params },
{
provider: BarService,
useFactory: setupBarService
deps: [ HttpClient, FooParams ]
}
}]
})
export class AppModule {}
这就是消耗pojo的类看起来像。 bar.service.ts
import { HttpClient } from '@angular/common/http';
import { FooParams } from './foo.service.ts';
expecto function setupBarService(http: HttpClient, params: FooParams) {
return new BarService(http, params);
}
@Injectable()
export class BarService {
constructor(http: HttpClient, params: FooParams) {}
//DO STUFF
}
答案 1 :(得分:0)
尝试通过将import 'core-js/es7/reflect';
导入polyfills.ts