Angular 角形6-罐';t在APP_初始化器上解析服务的所有参数
我试图在APP_初始值设定项上加载我的设置,但编译器抛出错误,无法解析AppSettingService的所有参数。还尝试注入appSettingService构造函数,但编译器仍引发相同的错误 appsetingservice.service.tsAngular 角形6-罐';t在APP_初始化器上解析服务的所有参数,angular,dependency-injection,Angular,Dependency Injection,我试图在APP_初始值设定项上加载我的设置,但编译器抛出错误,无法解析AppSettingService的所有参数。还尝试注入appSettingService构造函数,但编译器仍引发相同的错误 appsetingservice.service.ts import { AppSettings } from '../_models/appSettings'; import { BaseDataService } from '../base-data.service'; import { HttpC
import { AppSettings } from '../_models/appSettings';
import { BaseDataService } from '../base-data.service';
import { HttpClient } from '@angular/common/http';
export class AppSettingsService extends BaseDataService {
appSettings: AppSettings;
constructor(private http: HttpClient) {
super();
this.appSettings = null;
this.setDebugSettings();
}
setDebugSettings() {
this.appSettings = new AppSettings({
baseApiUrl: 'http://localhost:3000'
});
}
load(): Promise<any> {
return this.http
.get('http://localhost:3000')
.map((res: Response) => res.json())
.toPromise()
.then((data: any) => this.appSettings.baseApiUrl = 'http://localhost:3000')
.catch( (err) => Promise.resolve());
}
}
// factory method to get our config loaded at startup
export function configLoader(appSettingsService: AppSettingsService) {
return () => appSettingsService.load();
}
providers: [
...,
AppSettingsService,
{
provide: APP_INITIALIZER,
useFactory: configLoader,
deps: [AppSettingsService],
multi: true
},
...
AppSettingsService
的依赖项为HttpClient
,因此应将其标记为依赖项。尝试:
AppSettingsService,
{
provide: APP_INITIALIZER,
useFactory: configLoader,
deps: [AppSettingsService, HttpClient],
multi: true
},
还要确保导入了HttpClientModule
,就像Suren指出的那样。@ANMOL
试试这个-它将确保承诺在需要时得到解决,而不是在toPromise()
-这发生在我身上,一开始并不明显:
load(): Promise<any> {
const promise = new Promise((resolve, reject) => {
this.http
.get('http://localhost:3000')
.map((res: Response) => res.json())
.subscribe((data: any) => {
this.appSettings.baseApiUrl = 'http://localhost:3000';
resolve();
return data;
},
(err) => {
console.log(err);
reject();
})
});
return promise;
}
load():承诺{
const promise=新承诺((解决、拒绝)=>{
这是http
.get('http://localhost:3000')
.map((res:Response)=>res.json())
.订阅((数据:任意)=>{
this.appSettings.baseapirl='0http://localhost:3000';
解决();
返回数据;
},
(错误)=>{
控制台日志(err);
拒绝();
})
});
回报承诺;
}
将其放入AppSettingsService的构造函数中
constructor(@Inject(forwardRef(() => HttpClient)) private http: HttpClient)
我可以知道否决投票的原因吗?导入并提供httpclientModule后,错误仍然存在。