2016-07-27 1 views
0

Contexte:Angular2 Injecter Http Sans Bootstrap

J'ai une classe qui va former les requêtes POST pour mon repos Api, permet de l'appeler demandeur. Chaque appel ajax fait dans mon application sera envoyé à travers cela. Ainsi, je ne veux pas fournir Http via bootstrap(foo, [HTTP_PROVIDERS]); qui rendrait mondiale et j'ai besoin d'être injecté à demandeur

code:

import {Http} from '@angular2/http'; 
@Injectable() 
@Component({providers: [Http]}) 
export class requester { 
    constructor(private http:Http){} 
    ... 
} 

Erreur:

ORIGINAL EXCEPTION: No provider for Http! (requestor -> Http)

+1

'@Injectable()' et '@component()' air étrange ensemble. Très probablement, vous devez supprimer '@Component()' chose –

Répondre

0

-le résoudre comme ça

import { Http, Response } from '@angular/http'; 
export class LoginService { 

    constructor(private http: Http) { 

    } 
} 

ou l'utiliser comme ceci

public constructor(@Inject(Http) private http: Http) {} 
+0

Je reçois toujours la même chose – ZaksBack

1

essayer celui-ci

import {Http, HTTP_PROVIDERS} from '@angular2/http'; 

    @Component({ 
      .... 
      providers: [HTTP_PROVIDERS] 
      ....}) 
    export class requester { 
     constructor(private http:Http){} 
     ... 
    } 

En supposant les fournisseurs manquants pour votre demande

0

Supposant requester est un service.

Chaque Component qui utilise votre service requester doivent faire référence HTTP_PROVIDERS:

import {HTTP_PROVIDERS} from '@angular2/http'; 

@Component({ 
    ... 
    providers: [HTTP_PROVIDERS, requester], 
    ... 
}) 

export class MyComponent{ 
    constructor(private _req: requester) { 
    } 
} 
+0

Pourquoi ne peut pas le * demandeur * être le seul qui nécessite le HTTP_PROVIDER? – ZaksBack

+0

Je suppose que c'est en quelque sorte lié à la façon dont l'annotation est convertie en métadonnées pour les unités «injectables». Plus d'informations http://blog.thoughtram.io/fr/language/2015/09/17/resolve-service-dependencies-in-angular-2.html –