source

각도 예외:Http에 대한 공급자 없음

bestscript 2023. 5. 20. 22:43

각도 예외:Http에 대한 공급자 없음

나는 그것을 받고 있습니다.EXCEPTION: No provider for Http!내 Angular 앱에서.내가 뭘 잘못하고 있는 거지?

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 모듈 가져오기

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

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

platformBrowserDynamic().bootstrapModule(AppModule);

이 코드를 두 개의 개별 파일로 분할하는 것이 이상적입니다.자세한 내용은 다음을 참조하십시오.

>= Angular 4.

서론을 위하여HttpClientModule

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

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

Angular2 >= 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이전 버전에서

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

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

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

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

RC.5부터 당신은 비슷한 것을 해야 합니다.

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

platformBrowserDynamic().bootstrapModule(AppModule);

댓글 부분에만 있었기 때문에 에릭의 답변을 반복합니다.

나는 포함해야 했습니다.HTTP_PROVIDERS

수입품HttpModuleapp.sys.ts 파일에 있습니다.

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

또한 다음과 같이 HttpModule을 가져오기 전에 선언해야 합니다.

imports: [
    BrowserModule,
    HttpModule
  ],

가장 좋은 방법은 아래와 같이 공급자 배열에 Http를 추가하여 구성요소의 장식자를 변경하는 것입니다.

@Component({
    selector: 'greetings-ac-app2',
    providers: [Http],
    templateUrl: 'app/greetings-ac2.html',
    directives: [NgFor, NgModel, NgIf, FORM_DIRECTIVES],
    pipes: []
})

RC5 이후에는 HttpModule을 다음과 같이 가져와야 합니다.

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

그런 다음 위에서 귄터가 언급한 대로 HttpModule을 가져오기 배열에 포함합니다.

다음 라이브러리만 포함하면 됩니다.

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

그리고 http 클래스를 포함합니다.providers섹션, 다음과 같습니다.

@Component({
  selector: '...',
  templateUrl: './test.html',
  providers: [YourHttpTestService]

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

예:

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

Simple soultion : app.module.ts에서 HttpModule 및 HttpClientModule을 가져옵니다.

**

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



@NgModule({
 declarations: [
   AppComponent, videoComponent, tagDirective, 
 ],
 imports: [
  BrowserModule, routing, HttpClientModule, HttpModule

],
providers: [ApiServices],
bootstrap: [AppComponent]
})
export class AppModule { }

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

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

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

저는 제 코드에서 이 문제에 직면했습니다.나는 이 코드를 나의 app.module.ts에만 넣었습니다.

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

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

import { HttpModule } from '@angular/http';패키지를 module.ts 파일에 넣고 가져오기에 추가합니다.

이 두 가지를 모두 내 app.module.ts에 추가합니다.

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

&

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

이제는 잘 작동합니다.그리고 잊지 말고 추가하세요.

@NgModule => Imports:[] array

언급URL : https://stackoverflow.com/questions/33721276/angular-exception-no-provider-for-http