如何切换到组件?

问题描述 投票:1回答:2

我正在使用Angular 6和ngx-translate。切换到rtl而不弄乱主题的唯一方法是index.html中的<html dir="rtl">

component.ts

switchLanguage(language: string) {
  this.translate.use(language);
  localStorage.setItem('lang', JSON.stringify(language));
}

如果dir="rtl",如何将<html>添加到language === "ar",否则将其删除?

angular angular6 ngx-translate
2个回答
3
投票

我忘了提到从div改为rtl是行不通的,我在问这个问题之前测试过,正确切换主题的唯一方法是将它添加到<html>你可以通过在CoreUI Free Angular 2+ Admin Template上尝试来测试它我正在使用什么。

我设法解决了它

  switchLanguage(language: string) {
    this.translate.use(language);
    if (language !== 'ar' && document.getElementsByTagName('html')[0].hasAttribute('dir')) {
      document.getElementsByTagName('html')[0].removeAttribute('dir');
    } else if (language === 'ar' && !document.getElementsByTagName('html')[0].hasAttribute('dir')) {
      document.getElementsByTagName('html')[0].setAttribute('dir', 'rtl');
    }
    localStorage.setItem('lang', language);

  }

如果有人有更好的解决方案,请告诉我,我当然会投票并接受你的。


1
投票

你可以从html标签中读取输入,并为语言创建一个全局变量,这样你就可以通过逻辑来改变它。

你可以只使用绑定到你的组件:

<div  [dir]="isRtl"></div>
© www.soinside.com 2019 - 2024. All rights reserved.