2017-07-27 39 views
0

在角度路徑參數中是可觀察對象。我可以在此對象上訂閱:Ionic中的可觀察導航參數

this.route.params.subscribe(newValue => ...) 

我可以用Ionic navParams做類似的事嗎?

constructor(public navParams: NavParams) { 
    this.videoId = navParams.get('videoId'); 
} 

是否有可能將videoId轉換爲可觀察值?

例如我有一個product page。該產品有許多顏色變化。顏色是導航參數中的參數。用戶可以改變顏色,但不需要做NavCtrl.push(),因爲顏色變化太小了。這不是歷史上的另一頁。我只是想在組件中更改this.color。但我需要訂閱組件中的顏色更改。

+0

'Observable.of(navParams.get('videoId'))'?你爲什麼想要這個,你試圖解決什麼問題? – jonrsharpe

+0

我只是想從產品頁面正確導航到另一個產品頁面。如果我使用NavCtrl.push()來實現,那麼這個頁面會被添加到歷史記錄中,如果新產品只會替換舊產品,我認爲會更好。 – Ildar

+0

爲什麼這會更好?然後用戶不能回到前一個。請[編輯]解釋上下文。 – jonrsharpe

回答

1

如果您只是想通知從您的頁面到組件的顏色變化,您可以在此處使用事件。從ionic-angular導入事件類並將其注入構造函數。在按鈕的頁面上單擊發布事件,並在組件的構造器中訂閱該事件。所以代碼如下所示。

在您的網頁

import {Events} from ‘ionic-angular‘; 
onClick(){ 
    this.events.publish(‘myEvent‘); 
} 

而在你的組件,您可以訂閱該事件

this.events.subscribe(‘myEvent’,() => { 

// do something 

}); 
0

無需事件。 如果您將NavParams作爲對象傳遞,例如 {color : "red", videoId :1 }

它通過參考傳遞。因此,您在一面進行的任何更改都會反映在另一面,例如 {color : "blue" , videoId :1 }。 我不相信這會重新渲染整個頁面。

相關問題