2017-12-01 23 views
5

ich eine benutzerdefinierte Anforderungsoptionen in Angular 4 mit denen ich tat die folgenden:RequestOptions Migration Angular 5

default-Anfrage-options.service.ts

@Injectable() 
export class DefaultRequestOptions extends BaseRequestOptions { 
    headers = new Headers({ 
    'Accept': 'application/json', 
    'Content-Type': 'application/json' 
    }); 

    merge(options?: RequestOptionsArgs): RequestOptions { 
    var newOptions = super.merge(options); 
    const token: string = localStorage.getItem('token'); 
    if (token) { 
     newOptions.headers.set('token', token); 
    } 
    return newOptions; 
    } 
} 

App.Module.ts

providers: [ // expose our Services and Providers into Angular's dependency injection 
    { provide: RequestOptions, useClass: DefaultRequestOptions } 
    ] 

Aber nach der Migration feststellen, dass die RequestOption in dem neuen Ordner http/common/http nicht verfügbar ist

Ich würde gerne wissen, ob ich noch etwas ähnliches in Angular 5 verwenden kann oder es keinen Sinn macht, es mit dem neuen HTTPClient zu verwenden? Der Hauptvorteil für mich war, nur an einer Stelle zu setzen, ohne sie an alle meine Anfragen anhängen zu müssen.

bekam ich den Code zunächst in den Winkel docs: https://github.com/angular/angular.io/blob/master/public/docs/_examples/server-communication/ts/src/app/default-request-options.service.ts

Antwort

4

Sie interceptors verwenden können Standard-Header, um Ihre Anfragen hinzuzufügen. Beispiel aus dem eckigen Dokument:

import {Injectable} from '@angular/core'; 
import {HttpEvent, HttpInterceptor, HttpHandler, HttpRequest} from '@angular/common/http'; 

@Injectable() 
export class AuthInterceptor implements HttpInterceptor { 
    constructor(private auth: AuthService) {} 

    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { 
    // Get the auth header from the service. 
    const authHeader = this.auth.getAuthorizationHeader(); 
    // Clone the request to add the new header. 
    const authReq = req.clone({headers: req.headers.set('Authorization', authHeader)}); 
    // Pass on the cloned request instead of the original request. 
    return next.handle(authReq); 
    } 
} 
+0

Sieht aus wie Interzeptoren ist ein Weg zu gehen, genau was ich suchte und ein großes mehr. Tks – Abner

+1

Hallo, ich re-Factoring sehr ähnlichen Service, aber woher bekommen Sie den "AuthService"? – Vladyn