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



我正在使用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));
}

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

我忘了提到从div更改为 rtl 是行不通的,我在提出问题之前进行了测试,正确切换主题的唯一方法是将其添加到<html>您可以通过在我正在使用的 CoreUI 免费 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);
}

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

你可以读取输入表单的html标签, 并为语言创建一个全局变量,这样您也可以通过逻辑更改它。

您可以只使用绑定到组件中:

<div  [dir]="isRtl"></div>

最新更新