각도 예외: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);
이 코드를 두 개의 개별 파일로 분할하는 것이 이상적입니다.자세한 내용은 다음을 참조하십시오.
- https://v2.angular.io/docs/ts/latest/cookbook/rc4-to-rc5.html
- https://v2.angular.io/docs/ts/latest/guide/ngmodule.html
>= 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
'source' 카테고리의 다른 글
| new를 사용하여 C++에서 2d 배열을 선언하려면 어떻게 해야 합니까? (0) | 2023.05.20 |
|---|---|
| Azure AD 보안 토큰의 유효성을 확인하는 방법은 무엇입니까? (0) | 2023.05.20 |
| IOS에서 첫 번째 앱을 제출할 때 Xcode에서 번들 식별자 변경 (0) | 2023.05.20 |
| VB.NET의 유형 비교 (0) | 2023.05.20 |
| 쿼리 결과에서 결과의 랜덤 샘플 선택 (0) | 2023.03.21 |