2017-08-04 47 views
0

上午傳遞數據,但是無法具有retruieve它Angular2讀數通過路由解析的數據

從另一個分量(傳遞的數據的源)

this._router.navigate(["/tsafety/checklist-checks", truckdetails:this.regForm.value}]); 

現在在組件檢查表的檢查conmponent我有(其中正在發送數據)

constructor(){ 

this.sub = this.route.params 
    .subscribe(params => { 
    this.truckdetails = params["truckdetails"]; 
    console.log(params["truckdetails"]); 
    }) 
} 

上述控制檯顯示

[object Object] 

如何閱讀上面的參數數據時,其在控制檯中顯示對象

UPDATE routes文件

{path:'checklist-checks', component:TruckYardChecklistComponent}, 
+0

你能檢查console.log(JSON。字符串化(PARAMS [ 「truckdetails」]));並讓我知道迴應 –

+0

這顯示「[對象對象]」 –

+0

請將您的路線路徑添加到這裏 –

回答

1

this.regForm.value的結果是一個json對象,它包含已定義的字段及其各自的值。

console.log的結果是正確的,因爲在路徑參數中分配給'truckdetails'的值是this.regForm.value對象的.toString()值。

如果您想通過表格的所有數據,傳遞整個對象爲可選PARAMS像這樣

this._router.navigate(["/tsafety/checklist-checks", this.regForm.value]); 
+0

這是真的,它的一個對象,通過這種方式後,仍然無法訪問包含在原始數據中的一些對象,例如一個像材料這樣的字段也是一個對象({status:2,label:'new goods'})同樣也會拋出同樣的問題 –

+0

在你的情況下,你必須將this.regForm.value去掉到一個自定義對象中,該對象沒有作爲對象的值,並將它作爲params對象傳遞。事件更好,使用服務在一個組件之間傳遞數據(或者通過將數據緩存到服務上的變量,使用Observables等)。您使用可選參數傳輸表單數據的方式不正確。 –

1

您可以使用下面的語句來寫對象使用JavaScript控制檯。

console.log(JSON.stringify(params["truckdetails"])); 

這將在您檢查時在瀏覽器控制檯中打印json格式字符串。

+0

此輸出「[對象對象]」 –

+0

它應該打印json字符串通過將您的對象轉換爲json格式。 – TechnoCrat

+0

你能擴展你的對象瀏覽器控制檯嗎?它旁邊有一個小展開按鈕,可以讓您檢查對象的內容。 – TechnoCrat

1

其實,有你的代碼小的修正,我認爲它會工作:

在你的路由器文件
this._router.navigate(["/tsafety/checklist-checks", this.regForm.value]); 

然後做這樣的事情

{path:'checklist-checks/:truckdetails', component:TruckYardChecklistComponent}, 

現在你的代碼應該w^ORK如果您在this.regForm.value

1

中獲得價值,我認爲你已經在路線路徑錯過了到通過PARAMS

更換您的一行代碼

{path:'checklist-checks', component:TruckYardChecklistComponent}, 

通過以下行

{ path: 'checklist-checks/:truckdetails', component: ComponentTwo } 

請閱讀更多關於路線參數到here

Demo

希望這將幫助你!