当前位置: 首页 > 知识库问答 >
问题:

角度2 将类添加到正文标签

艾弘义
2023-03-14

如何在不将主体作为应用程序选择器并使用主机绑定的情况下将类添加到主体标记?

我尝试使用渲染器,但它改变了整个身体

body标记上的Angular 2.x绑定类

我正在开发一个大的 angular2 应用程序,更改根选择器会影响很多代码,我将不得不更改很多代码

我的用例是:

当我打开一个模态组件(动态创建)时,我想隐藏文档滚动条

共有2个答案

龙新荣
2023-03-14

我认为最好的方法是结合上面DaniS的两种方法:使用渲染器来实际设置/删除类,但也使用文档注入器,因此它不强烈依赖于windows. document,但可以动态替换(例如在渲染服务器端时)。所以整个代码如下所示:

import { DOCUMENT } from '@angular/common';
import { Component, Inject, OnDestroy, OnInit, Renderer2 } from '@angular/core';

@Component({ /* ... */ })
export class MyModalComponent implements OnInit, OnDestroy {
    constructor (
        @Inject(DOCUMENT) private document: Document,
        private renderer: Renderer2,
    ) { }

    ngOnInit(): void {
        this.renderer.addClass(this.document.body, 'embedded-body');
    }

    ngOnDestroy(): void {
        this.renderer.removeClass(this.document.body, 'embedded-body');
    }
}
羊舌志
2023-03-14

我很想发表评论。但由于声誉缺失,我写了一个答案。我知道解决这个问题的两种可能性。

  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(): void {
    this.renderer.setElementClass(document.body, 'modal-open', false);
  }
}

编辑角度4:

import { Component, OnDestroy, Renderer2 } from '@angular/core';

export class myModalComponent implements OnDestroy {

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

  ngOnDestroy(): void {
    this.renderer.removeClass(document.body, 'modal-open');
  }
}
 类似资料:
  • 问题内容: 我编写了一个Python脚本,用于合并两个csv文件,现在我想在最终的csv中添加标头。我尝试按照此处报告的建议进行操作,但出现以下错误:。解决此问题的最有效方法是什么? 这是我正在使用的代码: 问题答案: 该班预计 字典 的每一行。如果您只想编写一个初始标头,请使用常规并在标头的简单行中传递: 另一种方法是在跨数据复制时生成字典:

  • 如果满足条件,我如何将添加到? 我今天有什么:<代码> 但这增加了,我只想禁用

  • 在用JHipster生成的REST API中,我想抛出一些404异常。通常用 这实际上会导致对xhr请求的404响应。问题是,在前面,JHipster用 当404是实际响应时,这样的结果为空,这使得解析失败。 我试过这个:Spring-MVC控制器中的触发器404?但我无法设置响应的参数。

  • 我是一个新的yii 2开发者。我想将kartik库添加到我的站点并使用gridview!我安装了kartik,当我编写usekar时,它会自动完成kartik,这表明库已经安装。但是当我使用这样一个空的gridview时: 上面说 找不到类“kartik\grid\GridView” 我在php storm中使用了yii 2的基本版本!我应该如何解决此问题?

  • 问题内容: 我正在为应用设置身份验证。在发出登录请求后,将发送一个JSON Web令牌作为响应。我可以通过Ajax将其附加到标题。问题是登录后使用window.location.pathname进行重定向时,因为它不是Ajax请求,所以它没有在标头上附加令牌。我该如何解决? 问题答案: 简短的答案是:您不能使用设置HTTP标头。

  • 我正在研究这个angular2项目,其中我使用从一个组件导航到另一个组件。 有两个组件。i、 例如, 我想从PagesComponent导航到DesignerComponent。 到目前为止其路由正确但我需要通过 我尝试使用RouteParams,但它的获取页面对象。 下面是我的代码: 页面.组件. ts 在html中,我正在执行以下操作: 在 DesignerComponent 构造函数中,我完

  • 我让这个项目在Angular 8中运行,并使用飞行前和实际的api调用api。而且我们在它的网络安全上有一个问题,因为飞行前的选项没有标题严格的传输安全性:max age=31536000;includeSubDomains,而实际的GET api有一个。 您是否知道如何以及在哪里添加严格运输安全:max-age=31536000;包括预飞行和实际请求下的子域,以便两个请求将具有相同的标头?

  • 若要添加注解标签,可以在tag命令指定 -a选项执行。执行后会启动编辑区,请输入注解,也可以指定-m选项来添加注解。 $ git tag -a <tagname> 在HEAD指向的提交里添加名为banana的标签,请执行以下的命令。 $ git tag -am "连猴子都懂的Git" banana 如果在tag命令指定-n选项执行,可以显示标签的列表和注解。 $ git tag -n apple