如何从组件切换到 <html="rtl">?

Lyn*_*nob 1 ngx-translate angular angular6

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

component.ts

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

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

Lyn*_*nob 6

我忘了提到从 a 更改为 rtl 是div行不通的,我在提出问题之前对此进行了测试,正确切换主题的唯一方法是将其添加到<html>并且您可以通过在CoreUI Free Angular 2+上尝试进行测试我正在使用的管理模板

我设法解决了

  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);

  }
Run Code Online (Sandbox Code Playgroud)

如果有人有更好的解决方案,请告诉我,我当然会赞成并接受您的解决方案。