나는이 게시물 (http://www.adonespitogo.com/articles/angular-2-extending-http-provider/)을 확장하여 Http 클래스를 확장하고 Http의 싱글 톤을 반환하는 정적 메서드를 추가했습니다.
./services/http.service.ts
import { Injectable, ReflectiveInjector } from '@angular/core';
import {
BaseResponseOptions,
BaseRequestOptions,
BrowserXhr,
ConnectionBackend,
CookieXSRFStrategy,
Headers,
Http as HttpParent,
Request,
RequestOptions,
RequestOptionsArgs,
Response,
ResponseOptions,
XHRBackend,
XSRFStrategy
} from '@angular/http';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class CustomHttp extends HttpParent {
public static getInstance() {
if (!(this._instance instanceof CustomHttp)) {
this._instance = ReflectiveInjector.resolveAndCreate([
CustomHttp, BrowserXhr, XHRBackend,
{ provide: ConnectionBackend, useClass: XHRBackend },
{ provide: ResponseOptions, useClass: BaseResponseOptions },
{ provide: XSRFStrategy, useFactory:() => {
return new CookieXSRFStrategy();
}
},
{ provide: RequestOptions, useClass: BaseRequestOptions }
]).get(CustomHttp);
}
return this._instance;
}
private static _instance: CustomHttp;
}
./app.module.ts
import { NgModule } from '@angular/core';
import { HttpModule, RequestOptions, XHRBackend } from '@angular/http';
import { CustomHttp } from './services/http.service';
@NgModule({
bootstrap: [
AppComponent
],
declarations: [
AppComponent
],
imports: [
HttpModule
],
providers: [
{
provide: CustomHttp,
useFactory: (backend: XHRBackend, options: RequestOptions) => {
return new CustomHttp(backend, options);
},
deps: [XHRBackend, RequestOptions]
};
]
})
export class AppModule {}
./services/validation.service.ts
import CustomHttp from './http.service';
export class ValidationService {
static public doSomething() {
CustomHttp.getInstance().get('some/api/').subscribe(
(response) => {
console.log(response);
})
}
}
나는 그것이 당신을 위해 일하기를 바랍니다.
감사합니다, 그럼 내가 생각 : 당신의
OtherStaticClass
당신이 쓰기의 정적 메서드 어딘가에그리고 나는 정적을 바꿔야한다. 나는 이것에 관해 더 많이 google해야한다라고 생각한다. – revathi
솔루션에 대해 자세히 설명해 주시겠습니까? 유효성 검사 서비스에서도 비슷한 문제가 발생했으며 양식에 대한 유효성 검사를 만들기 위해이 자습서 [link] (https://coryrylan.com/blog/angular-form-builder-and-validation-management)를 수행했습니다. http를 서비스에 주입 할 때 정의되지 않습니다. 저는 정적 함수에 익숙하지 않은데 왜 그것이 작동하지 않는지 확실하지 않습니다. – PBandJen
유효성 검사 서비스는 정적 방법과 어떤 관련이 있습니까? 성취하려는 것을 보여주는 코드를 추가하는 곳에 새로운 질문을 만드는 것이 더 나을 수도 있습니다. –