我在 Angular 5 中有简单的自定义服务:
@Injectable()
export class RequestsMethods {
constructor(private http: HttpService) {
}
}
我试图在@NgModule({}) 中将此注册为提供程序:
providers: [
RequestsMethods,
FormRegister,
ErrorWatcher,
{
provide: HttpService,
useFactory: httpFactoryService,
deps: [Router, XHRBackend, RequestOptions]
}
],
然后在我使用的组件中:
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.css'],
providers: [RequestsMethods]
});
和组件构造函数:
constructor(private requestMethods: RequestsMethods){}
编译后给我一个错误:
错误:StaticInjectorError(AppModule)[HttpService -> XHRBackend]:
StaticInjectorError(Platform: core)[HttpService -> XHRBackend]: NullInjectorError: No provider for XHRBackend!在 NullInjector.push../node_modules/@angular/core/fesm5/core.js.NullInjector.get (core.js:1060) 在 resolveToken (core.js:1298) 在 tryResolveToken (core.js:1242) 在 StaticInjector .push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (core.js:1139) at resolveToken (core.js:1298) at tryResolveToken (core.js:1242) at StaticInjector.push ../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (core.js:1139) at resolveNgModuleDep (core.js:8374) at _callFactory (core.js:8442) at _createProviderInstance (core.js :8394)
如果从提供者中删除构造函数RequestsMethods并在提供者中注册RequestsMethods它工作正常