2017-03-16 66 views
0

我做了這樣的事情:獲取/設置數據到網址---角2

setURL(){ 
    this.router.navigate(['/app/chart', {height: this.chartHeight, width: this.chartWidth}]); 
} 

ngOnInit() { 

    this.route.params.subscribe(
     (params: any) => { 
      this.chartHeight= params['height'] || 0; 
      this.chartWidth= params['width'] || 0; 
     } 
    ); 
} 

這是好的,因爲如果PARAMS沒有設置(是不是在URL) - 默認寬度和高度設置爲0。和它的okey。但如果我改變這個,或者如果我在url中設置了一些值然後回車,沒有任何變化。我的意思是,如果我console.log它 - 值設置正確,但DOM不受影響。根本沒有改變。這是奇怪的...

+0

@siam哦,我需要15代表處點:P –

+0

我要確保我明白你的真正的問題。您希望將傳遞數據類型設置爲get請求,以便參數出現在用戶轉到的下一頁的URL中?如果是這樣,我想你可能想看看這個,http://stackoverflow.com/a/37157905/2218253 – wuno

+0

@wuno我不想把它傳遞到任何地方。我只想讓用戶能夠通過url設置圖表設置,例如圖表高度。因此,當用戶輸入完整的網址時,圖表會從url中加載設置。 :)) –

回答

2

** 更新開始 **

我知道現在你還想要的網址存在,這樣就可以讓人們直接進入該網址的位置。您還需要處理一個將從URL中提取參數的函數。

我相信this answer會幫助你,但我還沒有面對這個問題呢。

** 更新結束 **

你要複製的是一個GET請求的功能的網站。

在角2,如果你想將數據傳遞到你會做這樣的URL,

您將需要進口這些

import { Http, Response, Headers, URLSearchParams }from '@angular/http'; 
import { Observable }from 'rxjs/Observable'; 
import 'rxjs/add/operator/do'; 
import 'rxjs/add/operator/take'; 

創建觀察到,當它的變化來更新數據而不刷新它。

private DimensionsData: Observable<any>; 

每當有新的數據組通過時,都會調用此函數。

private SendData() { 
     let params: URLSearchParams = new URLSearchParams(); 
     params.set('width', this.width); 
     params.set('length', this.length); 
     return this.http.get('UrlPathHere/', 
      { search: params }) 
      .map((res: Response) => res.json()) 
     .take(1) //Takes the first observable and unsubscribes 
     .subscribe(res => this.DimensionsData = res.data_response) 
    } 

你會調用該函數得到的東西在ngOnInit()方法啓動,

ngOnInit() { 
     this.SendData(); 
} 

現在您可以DimensionsData,並用它在你的代碼的頁面上的設置。每次有人更新該頁面時,GET請求都會被調用,並且此更新將會更新此variableDimensionsData

您只需創建一項服務即可獲取URL中的數據,然後將其作爲response傳回。

我已經解釋瞭如何使用get請求來做到這一點,因爲這正是示例網站正在做的,你給我看的。

你可以看到,在這張圖片在這裏,

enter image description here

+0

這看起來很複雜。我的方法錯了嗎?或者它不會像它應該那樣工作?我會嘗試。 –

+0

是的它很複雜。你將遇到一些問題。你必須告訴angular2在你想要的時候更新數據。即使數據在URL中,就像你想要的一樣,你希望頁面如何改變,就像你向我展示的例子那樣?你需要那些觀測值。此外,人們很容易根據發送的數據獲取計算請求或檢索數據。如果你可以在前端處理所有這些都很好,但基本上你仍然會創建一個observable,然後在服務之間來回傳遞數據。 – wuno

+0

有沒有辦法簡化一點?讓我們說,我想只在'button'點擊時生成url。如果用戶單擊它,該函數會將這些設置變量發送到URL。所以我不必添加任何東西,將觀察實際狀態。我已經在我的問題中顯示了它,它將值發送到URL,但可以檢索它們。無論如何非常感謝你。 –