2016-01-24 83 views
1

我目前收到以下错误:角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)); 
}); 
+1

试着清理你的提供者,只是把顶层的东西放在最底层而不是真正需要的东西。我有一些类似的问题,但它不知何故在一段时间后消失... :) – eesdil

+0

总是很好的建议!事情现在非常混乱,因为我一直在尝试每一种组合,但都没有运气。现在清理东西,也许会修复它。 –

+1

为什么在组件级别再次配置'HTTP_PROVIDERS','Http','AuthHttp'? 'Http'提供程序已经包含在'HTTP_PROVIDERS'中......这个答案可以帮助你理解依赖注入在Angular2中的工作方式:http://stackoverflow.com/questions/34804298/whats-the-best-way-to-注入一个服务到另一个在角2-beta/34807397 –

回答

0

看来,这的确是一个错误与Angular2-jwt,或至少与其配置。 Here is the way it should be configured.

不过,我已经设法清理一些东西了。如果这个问题实际上更深入,我会尝试重新打开。

1

您必须添加HTTP_BINDINGS

import {HTTP_BINDINGS} from 'angular2/http'; 


bootstrap(..., [ 
    ... 
    HTTP_BINDINGS, 
    ... 
]).catch(...); 
+2

它看起来像[HTTP_BINDINGS](https://angular.io/docs/ts/latest/api/http/HTTP_BINDINGS-let.html)被移到了HTTP_PROVIDERS,我已经有了。 –

+1

@LouisCruz很高兴知道,但我不应该太惊讶,因为它仍然是测试版。也许你的问题是你在bootstrap注入'HTTP_PROVIDERS'并且在组件中注入int?我想有一次会做。 – Eggy

+0

我已经删除了所有其他'HTTP_PROVERS'注入。仍然得到相同的错误。 –

相关问题