css - Angular2 如何更改 typescript 中 css 类的样式?

标签 css angular typescript

我正在尝试根据用户想要查看的内容在很长的列表中切换元素的查看类别。我想切换查看所有内容,仅查看 session 、仅查看事件或什么都不查看。 (这是一个小例子我真的有大约 15 个类别)

<ul>
<li class="cal-meeting">meeting title</li>
<li class="cal-event">event title</li>
<!-- … the list goes on with various events and meetings -->

所以我有以下复选框来切换可视元素:

<input type="checkbox" checked (click)="toggleCal('meeting')">
<input type="checkbox" checked (click)="toggleCal('event')">
// checkboxes are initially checked however I will make this dynamic saved in DB for user preference

在我的 TypeScript Angular 组件中,我有以下功能:

toggleCal(toggle_items) {
   if (toggle_items === 'meeting') {
       // this.display_meeting is initially set to true in ngOnInit
       this.display_meeting = !this.display_meeting;
       if ( this.display_meeting ) {
          // set class cal-meeting to display: block;
       } else {
          // set class cal-meeting to display: none;
       }
   }
// do the same thing if toggle_items === 'event'
}

如何在我的 Typescript 中更改类 cal-meeting 和 cal-event 的显示值?我假设只更改类的 CSS 值是最好的方法。

我试过:

document.getElementsByClassName('cal-meeting').style.display = 'none';

但我收到一条错误消息“类型‘HTMLCollectionOf’上不存在属性‘style’”

最佳答案

尝试将您的选择转换为 HTMLElement

const element = <HTMLElement> document.getElementsByClassName('cal-meeting')[0];

然后使用:

element.style.display = 'none';

你也可以使用 *ngif 来删除它,但是如果你想使用 javascript 的函数来改变样式,你应该将它转换为 HTMLElement 但您可以使用 angular [ngStyle]="{'property': expression}"来更改样式,例如:

<li class="cal-meeting" [ngStyle]="{'display': !this.display_meeting ? 'none': 'block'}">meeting title</li>

或者你可以添加类,例如,如果你有这样的类:

.d-none: {display: none}
.d-block: {display: block}

您可以在 typescript 中使用它,例如:

export class MyComponent implements OnInit {
hidingClass: string = '';
toggleCal(toggle_items) {
if (toggle_items === 'meeting') {
       this.display_meeting = !this.display_meeting;
       if ( this.display_meeting ) {
          this.hidingClass = 'd-block'
       } else {
          this.hidingClass = 'd-none'
       }
   }
// do the same thing if toggle_items === 'event'
}

只需在您的 html 元素中使用它:

<li class="cal-meeting" [ngClass]="hidingClass">meeting title</li>

关于css - Angular2 如何更改 typescript 中 css 类的样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58356424/

相关文章:

Angular 6 - ng-bootstrap - 样式选项卡

node.js - 如何将 @types 的版本与 NodeJS Typescript 中关联包的版本相关联?

html - 将 unicode 放入 CSS 内容中合法吗?

javascript - 浏览器自动填充选项与 Angular Material 自动完成选项重叠

html - 将未知宽度的元素放在居中元素的右侧而不移动它

css - 带有父级子行的Angular Material垫表的备用颜色

angular - ViewChild 和 focus()

typescript - 使用 TypeScript 类装饰器更改类类型

html - 用图像替换 Font Awesome 社交媒体图标

css - 更改背景 svg 的条纹 Angular