【发布时间】:2018-03-07 04:03:48
【问题描述】:
一旦用户更改语言,我正在尝试动态更改 Ionic 3 菜单端。 RTL 语言菜单需要在右侧,默认设置在左侧。
当语言改变app.components.ts时,我从@ngx-translate/core事件订阅TranslateService:
this.translate.onLangChange.subscribe((event: LangChangeEvent) => {
console.info(`Language change to ${event.lang}`);
this.isRTL = event.lang == 'ar' || event.lang == 'fa';
if (event.lang == 'ar' || event.lang == 'fa') {
this.platform.setDir('rtl', true);
this.menuSide = 'right';
} else {
this.platform.setDir('ltr', true);
this.menuSide = 'left';
}
this.platform.setLang(event.lang, true);
});
当我更改语言并按预期设置所有变量时,上面的代码将成功执行(我已经编写了单元测试以确保在应用程序运行时编写了大量的 console.logs。)
在模板中:
<ion-menu [content]="content" [side]="isRTL?'right':'left'" side="{{menuSide}}">
....
</ion-menu>
但是,即使控制器中的this.menuSide 发生了变化,它也不会按预期工作。
好像只有在platform.ready()之前才能换边,一旦platform.ready()设置好了,不管我怎么设置都不会生效。
编辑:
我尝试使用https://stackoverflow.com/a/46417869/636136 中的方法,但也没有解决问题。
如果我只是在模板中打印menuSide,它将在屏幕上显示正确的值,但对菜单方向没有任何影响。
我可以通过浏览器元素检查器手动更改菜单元素上的“side”属性,它会成功更改方向,但是使用menuSide 变量将无法完成这项工作。
【问题讨论】:
标签: angular typescript ionic-framework ionic3