我目前收到以下错误:角2服务错误 - 没有提供对HTTP
EXCEPTION: No provider for Http! (Login -> AuthHttp -> Http)
AuthHttp是Angular2,智威汤逊的参考。这可能是一个问题吗?我一直在盯着这一段时间,我找不到可能发生的错误。
在我login.ts:
import {Component} from 'angular2/core';
import {
FORM_DIRECTIVES,
FormBuilder,
ControlGroup,
Validators,
AbstractControl,
Control
} from 'angular2/common';
import {Http, Headers} from 'angular2/http';
import {Router} from 'angular2/router';
import {ButtonRadio} from 'ng2-bootstrap/ng2-bootstrap';
import {AuthHttp, AuthConfig} from 'angular2-jwt';
import {AuthService} from '../../services/auth/authService';
import {AlertService} from '../../services/alerts/alertsService';
import {User} from '../../datatypes/user/user';
@Component({
selector: 'login',
template: require('./login.html'),
directives: [ ButtonRadio, FORM_DIRECTIVES ],
providers: [AuthService, AlertService, Http, AuthHttp]
})
在我main.ts:
document.addEventListener('DOMContentLoaded', function main() {
bootstrap(App, [
('production' === process.env.ENV ? [] : ELEMENT_PROBE_PROVIDERS),
HTTP_PROVIDERS,
ROUTER_PROVIDERS,
provide(LocationStrategy, { useClass: HashLocationStrategy }),
provide(AuthConfig, { useFactory:() => {
return new AuthConfig({
headerName: 'Authorization',
//headerPrefix: 'Bearer ',
tokenName: 'auth_token',
noJwtError: true
});
}}),
AuthHttp,
Http,
ConnectionBackend
])
.catch(err => console.error(err));
});
试着清理你的提供者,只是把顶层的东西放在最底层而不是真正需要的东西。我有一些类似的问题,但它不知何故在一段时间后消失... :) – eesdil
总是很好的建议!事情现在非常混乱,因为我一直在尝试每一种组合,但都没有运气。现在清理东西,也许会修复它。 –
为什么在组件级别再次配置'HTTP_PROVIDERS','Http','AuthHttp'? 'Http'提供程序已经包含在'HTTP_PROVIDERS'中......这个答案可以帮助你理解依赖注入在Angular2中的工作方式:http://stackoverflow.com/questions/34804298/whats-the-best-way-to-注入一个服务到另一个在角2-beta/34807397 –