【问题标题】:Observable Nav params in IonicIonic 中的可观察导航参数
【发布时间】:2017-07-27 10:31:42
【问题描述】:

在 Angular 中,路由参数是可观察的对象。我可以订阅这个对象:

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

我可以用 Ionic navParams 做类似的事情吗?

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

是否可以将 videoId 转换为可观察值?

例如,我有一个product page。该产品有多种颜色变化。颜色是来自 Nav 参数的参数。用户可以更改颜色,但无需执行 NavCtrl.push(),因为颜色变化太小。这不是历史上的另一页。我只想更改组件中的 this.color。但是我需要订阅组件的颜色变化。

【问题讨论】:

  • Observable.of(navParams.get('videoId'))?你为什么要这个,你想要解决的问题是什么?
  • 我只想正确地从产品页面导航到另一个产品页面。如果我使用 NavCtrl.push() 执行此操作,则页面将添加到历史记录中,我认为如果新产品仅替换旧产品会更好。
  • 为什么会更好?那么用户就不能回到上一个。请edit解释上下文。
  • 好的,我更新了问题
  • 您可以设置自己的主题,然后将您想要的任何值推入其中(从构造函数中的导航参数值开始)。我写了一篇关于我们如何使用主题的博文:blog.jonrshar.pe/2017/Apr/09/async-angular-data.html

标签: angular ionic-framework rxjs


【解决方案1】:

如果您只是想通知从页面到组件的颜色变化,您可以在此处使用事件。从 ionic-angular 导入事件类并将其注入构造函数。在按钮上的页面中单击发布事件并在组件的构造函数中订阅该事件。所以代码如下所示。

在您的页面中

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

在您的组件中,您可以订阅该事件

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

// do something

});

【讨论】:

    【解决方案2】:

    不需要事件。 如果您将 NavParams 作为对象传递,例如 {color : "red", videoId :1 }

    它是通过引用传递的。因此,您在一侧所做的任何更改都会反映在另一侧,例如 {color : "blue" , videoId :1 }。 我不相信这会重新呈现整个页面。

    【讨论】:

      猜你喜欢
      • 2017-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      相关资源
      最近更新 更多