Динамическое определение направления страницы - Angular 5 - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь динамически установить направление страницы (RTL или LTR) в моем проекте Angular 5.

В index.html , если я статически пишу ту или иную метку в теле тега или в селекторе app-root, все работает нормально.

<body dir="rtl">
  <app-root></app-root>
</body>

Однако, если я пытаюсь установить динамически, например, с помощью переменной с именем textDir, ничего не происходит (она сохраняет стандартное значение, значение LTR):

index.html

<body [dir]="textDir">
  <app-root></app-root> <!-- I tried also <app-root [dir]="textDir"></app-root> with no success -->
</body>

app.component.ts

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'app';

  public textDir;    
  lang = sessionStorage.getItem("lang");    

  constructor() { 

    if(this.lang === "he"){
      this.textDir = 'rtl';
    }
    else {
      this.textDir = 'ltr';
    }
    console.log(this.textDir); 
  }

}

console.log отображает правильное направление в соответствии с условием, но не влияет на index.html. Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

вы можете использовать document.dir в вашем компоненте-подрядчике приложения, и он установит dir для вашего HTML-тега и может передать его с переменной

direction : string = "rtl";
constructor() {
  document.dir = this.direction;
} 
0 голосов
/ 07 мая 2018

В index.html не выполняется привязка шаблона. Для этого вы должны сделать корневой элемент внутри вашего app.component.html, например:

app.component.html

<div [dir]="textDir">
  <!-- rest of app template -->
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...