【问题标题】:Ionic 3 - Side menu , change side dynamicallyIonic 3 - Side menu , 动态换边
【发布时间】:2018-01-28 11:42:26
【问题描述】:

我想在更改语言时自动更改侧边菜单的方向(rtl 和 ltr) 我在页面 app.html 中尝试了这段代码

<ion-menu [side]="isRtl?'right':'left'" [content]="content">

如何从另一个页面或示例“home.ts”更改“isRtl”的值?

'isRtl' 在 'app.component.ts' 中声明 有什么帮助吗?

【问题讨论】:

  • isRtl 是函数还是变量?
  • @suraj 它是在 'app.component.ts' 中声明的 var,但我如何从另一个页面更改 isRtl 的值,例如“home.ts”
  • @Fray 哪个解决方案适合您。我还没有得到任何解决方案。

标签: angular ionic3 side-menu


【解决方案1】:

使用跨组件的事件发射器在组件之间传输数据

//Home component.ts
import { Events } from 'ionic-angular';  
   constructor(public events: Events) {
      directioChange(user) {
            this.events.publish('directiochanged', 'true');
      }
   }


//App.component.ts
constructor(public events: Events) {
     events.subscribe('directiochanged', (direction) => { 
           this.isRtl = direction;console.log(direction);
     });
}

不仅可以从 home 组件,您还可以从项目中的任何位置进行设置

【讨论】:

  • 事件发射器工作,但离子菜单的动态侧不工作。
  • @Raza - 我根据您的代码动态设置 [side]。首先我设置了ltr。当我设置 rtl 然后不能更改为 ltr。
  • @KhurshidAnsari - 由于 [side]='value' 是动态属性,默认情况下,值的变化应立即反映在值的变化上。如果不在 html 中打印 {{isRtl" 并检查天气预期值是否发生变化。
  • 如果仍然没有运气,请尝试使用 ngIf 刷新 ,这可能会有所帮助:refresh = false; setTimeout(()=>{refresh = true;},0);在事件订阅内
  • 太好了,你明白了。
猜你喜欢
  • 2017-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-27
  • 2013-09-15
  • 2018-03-25
  • 2020-05-22
  • 2020-10-24
相关资源
最近更新 更多