Dostaję EXCEPTION: No provider for Http!
w mojej aplikacji Angular. Co ja robię źle?
import {Http, Headers} from 'angular2/http';
import {Injectable} from 'angular2/core'
@Component({
selector: 'greetings-ac-app2',
providers: [],
templateUrl: 'app/greetings-ac2.html',
directives: [NgFor, NgModel, NgIf, FORM_DIRECTIVES],
pipes: []
})
export class GreetingsAcApp2 {
private str:any;
constructor(http: Http) {
this.str = {str:'test'};
http.post('http://localhost:18937/account/registeruiduser/',
JSON.stringify(this.str),
{
headers: new Headers({
'Content-Type': 'application/json'
})
});
HTTP_PROVIDERS
.HttpModule
i co robi.Odpowiedzi:
Zaimportuj HttpModule
Najlepiej jest podzielić ten kod na dwa osobne pliki. Aby uzyskać więcej informacji, przeczytaj:
źródło
app.ts
.main.ts
.> = Kątowy 4.3
dla wprowadzonych
HttpClientModule
Kątowe 2> = RC.5
Zaimportuj
HttpModule
do modułu, w którym go używasz (tutaj na przykładAppModule
:Importowanie
HttpModule
jest bardzo podobne do dodawaniaHTTP_PROVIDERS
w poprzedniej wersji.źródło
Wraz z wydaniem Angular 2.0.0 z 14 września 2016 r. Nadal używasz HttpModule. Twój główny
app.module.ts
wyglądałby mniej więcej tak:Następnie
app.ts
możesz uruchomić jako taki:źródło
Dodaj HttpModule, aby zaimportować tablicę w pliku app.module.ts przed użyciem.
źródło
Od rc.5 musisz zrobić coś takiego
źródło
ponieważ było to tylko w sekcji komentarzy, powtarzam odpowiedź Erica:
Musiałem uwzględnić
HTTP_PROVIDERS
źródło
Zaimportuj
HttpModule
do pliku app.module.ts.Pamiętaj również, aby zadeklarować moduł HttpModule w ramach importu, jak poniżej:
źródło
Najlepszym sposobem jest zmiana dekoratora elementu poprzez dodanie Http w tablicy dostawców jak poniżej.
źródło
Http
obiektu dla każdego komponentu. Lepiej mieć jeden dla aplikacji, co można osiągnąć, importując go naNgModule
poziomie.od wersji RC5 musisz zaimportować moduł HttpModule w następujący sposób:
następnie dodaj HttpModule do tablicy importu, jak wspomniano powyżej przez Güntera.
źródło
Wystarczy dołączyć następujące biblioteki:
i dołącz klasę http do
providers
sekcji w następujący sposób:źródło
Jeśli masz ten błąd w swoich testach, powinieneś utworzyć Fałszywą usługę dla wszystkich usług:
Na przykład:
I przedtem Każdy:
źródło
**
źródło
Wszystko, co musisz zrobić, to dołączyć następujące biblioteki do tour app.module.ts, a także dołączyć je do importu:
źródło
W moim kodzie napotkałem ten problem. Umieszczam ten kod tylko w moim app.module.ts.
źródło
import { HttpModule } from '@angular/http';
spakuj do pliku module.ts i dodaj do importu.źródło
Po prostu dodaję oba w moim app.module.ts:
I
Teraz działa dobrze .... I nie zapomnij dodać w
@NgModule => Imports:[] array
źródło