Подтвердить что ты не робот

Angular2 добавить класс в тег body

Как добавить класс в тег body, не делая тело в качестве селектора приложений и используя привязку хоста?

Я попробовал unsing the Renderer, но он изменил все тело

Angular 2.x связать класс с тегом body

Я работаю над большим приложением angular2, а изменение корневого селектора будет сильно влиять на код, > мне придется изменить много кода

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

4b9b3361

Ответ 1

Я хотел бы прокомментировать. Но из-за недостающей репутации я пишу ответ. Ну, я знаю две возможности решить эту проблему.

  • Внедрить глобальный документ. Ну, это может быть не самая лучшая практика, поскольку я не знаю, поддерживает ли nativescript и т.д. Но это по крайней мере лучше, чем использование чистого JS.
       constructor(@Inject(DOCUMENT) private document: Document) {

        }



      ngOnInit(){
            this.document.body.classList.add('test');
        }

Ну и, возможно, даже лучше. Вы можете внедрить рендерер или рендерер 2 (на NG4) и добавить класс с помощью средства визуализации.

export class myModalComponent implements OnDestroy {

  constructor(private renderer: Renderer) {
    this.renderer.setElementClass(document.body, 'modal-open', true);
   }

  ngOnDestroy() {
    this.renderer.setElementClass(document.body, 'modal-open', false);
  }

EDIT FOR ANGULAR4:

export class myModalComponent implements OnDestroy {

  constructor(private renderer: Renderer2) {
    this.renderer.addClass(document.body, 'modal-open');
   }

  ngOnDestroy() {
    this.renderer.removeClass(document.body, 'modal-open');
  }