2017-11-09 9 views
1

私は、以前のHttpのすべてのインスタンスを移行して、Angularによって提供される新しいHttpClientを利用する必要があるプロジェクトに取り組んでいます。私はHttpClientを使用するために、私はHttpClientModuleをインポートする必要があることを知っているAngularプロジェクトのHttpClientへの移行

async getUser() { 
    try { 
    this.logger.debug('Getting User State...'); 

    const userInfo = await this.dataService.getAsync<[Type Parameter]>(
     this.constantService.urls.authenticatedUserUri, <RequestOptions>{ withCredentials: true } 
    ); 

    this.logger.debug(JSON.stringify(userInfo)); 
    this.authorizeUser(userInfo); 
    } catch (error) { 
    this.logger.debug(error); 
    } 
} 

@Injectable() 
export class DataService { 

    constructor(private http: Http) { } 

    async getAsync<T>(resource: string, options?: RequestOptions): Promise<T> { 
    return this.http 
     .get(resource, options) 
     .map((response: Response) => response.json()) 
     .catch(this.handleError).toPromise(); 
    } 

と、このような別のサービスクラスの内部で使用:このよう非同期メソッドは、DataServiceのクラス内で宣言されていますDataServiceクラスを提供するモジュールで、サービス内でHttpClientをインポートし、クラスのコンストラクタ経由で注入します。 JSONがデフォルトの応答タイプになったので、.map((response: Response) => response.json())という行は不要です。

私の主な質問は、HttpClientモジュールでサポートされていないRequestOptionsオブジェクトの代わりに何を使用するかです。私はRequestOptionsの代わりにHttpHeadersやHttpParamsを利用しなければならないと思っていますが、実装についてはわかりません。ライン<RequestOptions>{ withCredentials: true }も私を捨てている。

私は適切な解決策を見つけるために調査を続け、ドキュメントを読むつもりですが、この特定の問題については何か助けていただきありがとうございます。ありがとう!

+0

optionsには型がありません。かなり簡単な解決策、ありがとう@Venomy – rkuehl92

答えて

1

オプションは、もはや単なるanyRequestOptionsを交換

を入力されていません。あなたは以下を参照してくださいすることができますドキュメントで

request(first: string|HttpRequest<any>, url?: string, options: { 
    body?: any, 
    headers?: HttpHeaders|{[header: string]: string | string[]}, 
    observe?: HttpObserve, 
    params?: HttpParams|{[param: string]: string | string[]}, 
    reportProgress?: boolean, 
    responseType?: 'arraybuffer'|'blob'|'json'|'text', 
    withCredentials?: boolean, 
} = {}): Observable<any> 

あなたが見ることができるように、withCredentialsはまだ利用可能であり、オプションはもはや入力されていることを指摘されなかっ

関連する問題