[Angular] 각도 예외 : Http 제공 업체 없음



Answers

> = 각도 4.3

도입 된 HttpClientModule

import { HttpClientModule } from '@angular/common/http';

@NgModule({
  imports: [
    BrowserModule,
    FormsModule, // if used
    HttpClientModule,
    JsonpModule // if used
  ],
  declarations: [ AppComponent ],
  bootstrap:    [ AppComponent ]
})
export class AppModule { }

각도 2> = RC.5

HttpModule 을 사용하는 모듈로 가져 오십시오 (예 : AppModule :

import { HttpModule } from '@angular/http';

@NgModule({
  imports: [
    BrowserModule,
    FormsModule, // if used
    HttpModule,
    JsonpModule // if used
  ],
  declarations: [ AppComponent ],
  bootstrap:    [ AppComponent ]
})
export class AppModule { }

HttpModule 임포트하는 것은 이전 버전에서 HTTP_PROVIDERS 를 추가하는 것과 매우 유사합니다.

Question

나는 EXCEPTION: No provider for Http! 얻고있다 EXCEPTION: No provider for Http! 내 각도 응용 프로그램에서. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

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'
                })
            });



2016 년 9 월 14 일 Angular 2.0.0 릴리스에서는 HttpModule을 계속 사용하고 있습니다. 주요 app.module.ts 는 다음과 같습니다.

import { HttpModule } from '@angular/http';

@NgModule({
   bootstrap: [ AppComponent ],
   declarations: [ AppComponent ],
   imports: [
      BrowserModule,
      HttpModule,
      // ...more modules...
   ],
   providers: [
      // ...providers...
   ]
})
export class AppModule {}

그런 다음 app.ts 에서 다음과 같이 부트 스트랩 할 수 있습니다.

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/main/app.module';

platformBrowserDynamic().bootstrapModule(AppModule);



app.module.ts 파일에서 HttpModule 을 가져 오십시오.

import { HttpModule } from '@angular/http';
import { YourHttpTestService } from '../services/httpTestService';

또한 아래와 같이 가져 오기에서 HttpModule을 선언해야합니다.

imports: [
    BrowserModule,
    HttpModule
  ],



HttpModule을 추가하여 사용하기 전에 app.module.ts 파일에 배열을 가져옵니다.

import { HttpModule } from '@angular/http';

@NgModule({
  declarations: [
    AppComponent,
    CarsComponent
  ],
  imports: [
    BrowserModule,
	HttpModule  
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }




테스트에서이 오류가 발생하면 모든 서비스에 대해 위조 서비스를 만들어야합니다.

예 :

import { YourService1 } from '@services/your1.service';
import { YourService2 } from '@services/your2.service';

class FakeYour1Service {
 public getSomeData():any { return null; }
}

class FakeYour2Service {
  public getSomeData():any { return null; }
}

그리고 전에 각 :

beforeEach(async(() => {
  TestBed.configureTestingModule({
    providers: [
      Your1Service,
      Your2Service,
      { provide: Your1Service, useClass: FakeYour1Service },
      { provide: Your2Service, useClass: FakeYour2Service }
    ]
  }).compileComponents();  // compile template and css
}));



RC5의 경우 HttpModule을 다음과 같이 가져와야합니다.

import { HttpModule } from '@angular/http';

Gunter가 위에서 언급 한 것처럼 가져 오기 배열에 HttpModule을 포함시킵니다.




둘러보기 app.module.ts에 다음 라이브러리를 포함하고 가져 오기 에도이 라이브러리를 포함하기 만하면 됩니다.

import { HttpModule } from '@angular/http';

@NgModule({
  imports:    [ HttpModule ],
  declarations: [ AppComponent ],
  bootstrap:    [ AppComponent ]
})
export class AppModule { }