2017-07-27 59 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 }。 我不相信这会重新渲染整个页面。