2016-08-20 26 views
0

簡單的問題。Angular2路由器模板請求http標題

Angular2路由器用於向服務器發送路由請求的用途是什麼?我需要在所有模板請求中插入自定義標頭(X-locale:'en'),以便服務器可以轉換它們。

我重寫了BaseRequestOptions和Http類,它正在處理除默認路由調用以外的所有內容。我的意思是@Component模板調用。


更新#1

我會說明問題

這裏是模板的要求是angular2讓我Laravel5後端。

enter image description here

通知的 Main.Users.user Main.Users.user細節

等。

這些都是Angular2製作的@Component模板請求。我也將發佈以下

enter image description here

我需要將X-區域頭插入@Component模板的請求的HTTP頭中的請求的詳細信息。爲此,我需要知道什麼類創建這些請求,所以我可以以某種方式修改請求標頭。


更新#2

我也會把我的自定義BaseRequestOptions代碼

class RequestOptionsWrapper extends BaseRequestOptions { 
    constructor() { 
     super(); 
     let locale = (localStorage.getItem("locale")) ? localStorage.getItem("locale") : "en" ; 
     this.headers.append('X-locale', locale); 
    } 
} 

//enableProdMode(); 
bootstrap(
    AppComponent, 
    [ 
     ROUTER_PROVIDERS, 
     ROUTER_DIRECTIVES, 
     HTTP_PROVIDERS, 

     provide(RequestOptions, { useClass: RequestOptionsWrapper }) 
    ] 
) 

可正常工作,並插入X-區域到所有的HTTP請求我讓應用中,除了那些被排除在外的該死的模板調用之外。我也覆蓋了Http類,但@Component模板調用既不調用Http類,也不調用BaseRequestOptions類。

一個Http.post要求

enter image description here

+0

AFAIK路由器不會使對服務器的請求都沒有。該路由器僅限客戶端。當路由切換到延遲加載模塊的組件時,Angular可能會加載一些組件。 –

+0

我更新了我的初始問題,以便您更好地瞭解我需要的內容。 –

+0

您可以請發佈顯示您的自定義'BaseRequestOptions'的代碼以及您如何提供它? –

回答

0

的小例子,謝謝JB Nizet和君特。我最終選擇使用angular2-cookie而不是請求頭。

我做了一個全局的CookieService服務,我爲我的應用程序提供了服務,並設置了所有模板請求中使用的區域Cookie。

App.ts

import { CookieService }           from 'angular2-cookie/core'; 

//enableProdMode(); 
bootstrap(
    AppComponent, 
[ 
    CookieService, 

    ROUTER_PROVIDERS, 
    ROUTER_DIRECTIVES, 
    HTTP_PROVIDERS, 

] 
) 
.catch(err => console.error(err)); 

和請求

enter image description here