gpt4 book ai didi

javascript - 在 Angular2 中将类添加到组件之外的特定 dom

转载 作者:行者123 更新时间:2023-11-27 22:32:17 24 4
gpt4 key购买 nike

我有一个组件,它根据名为“isVisible”的变量是 True 或 False 来打开模式。一旦模式可见,我想将一个类添加到页面的“body”标签中,一旦关闭,我想从“body”标签中删除该类。

下面是我的代码片段以及我所尝试的内容。

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

@Component({
selector: 'modal',
template: '<div class="modal_div">
<div (click)="closeCard()"></div>
<div class="modal_body">blah</div>
</div>'
})

export class DailogComponent{
isVisible: boolean;
constructor(public element: ElementRef){
this.isVisible = false;
}

OpenModal(){
this.isVisible = true;
//add css class to body here which is where I am lost
console.log(this.element.nativeElement.parentNode.querySelector('body'));
}

closeModal(){
this.isVisible = false;
//remove css class to body here which is where I am lost
console.log(this.element.nativeElement.parentNode.querySelector('body'));
}
}

最佳答案

如果这是错误的或者 ng 中的反模式,请有人纠正我。

你可以使用 javascript 来实现这一点。如果我理解正确的话,你想更改 body 标签的类。所以是页面的主体。 <body></body>

How do I toggle an element's class in pure JavaScript?

getElementsByTagName()或者是像你一样的查询选择器,我个人使用 getElementsByTagName 没有什么好的理由,只是我已经习惯了。

  //don't capitalize function names.
toggleBodyClass(){
this.toggleClass(document.getElementsByTagName('body')[0], 'myclass');
}
//this function is taken from the Stackoverflow thread posted above.
toggleClass(ele, class1) {
let classes = ele.className;
let regex = new RegExp('\\b' + class1 + '\\b');
let hasOne = classes.match(regex);
class1 = class1.replace(/\s+/g, '');
if (hasOne)
ele.className = classes.replace(regex, '');
else
ele.className = classes + class1;
}

已测试,有效

关于javascript - 在 Angular2 中将类添加到组件之外的特定 dom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39454397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com