代码之家  ›  专栏  ›  技术社区  ›  Lynob

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

  •  1
  • Lynob  · 技术社区  · 6 年前

    我用的是Angular 6,和ngx translate。切换到rtl而不影响主题的唯一方法是 <html dir="rtl">

    component.ts :

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

    dir="rtl" <html> 如果 language === "ar" ,否则删除它?

    2 回复  |  直到 6 年前
        1
  •  6
  •   Lynob    6 年前

    我忘了提到从一个 div 不起作用,我测试了在问问题之前,正确切换主题的唯一方法是将其添加到 <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);
    
      }
    

        2
  •  0
  •   Or Yaacov    6 年前

    你可以从html标签中读取输入信息,

    您可以在组件中使用绑定:

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