【发布时间】:2020-05-30 20:56:35
【问题描述】:
我正在使用 Angular,我正在尝试在浅色和深色主题之间切换。切换开关在我的标题组件中。请看下文
而我的header组件是app组件中的子组件。另见下文
// app.component.html
<app-header (mode)="receiveMode($event)"></app-header>
<router-outlet></router-outlet>
因此,我在我的头组件 TS 文件中设置了切换主题的布尔值
// header.component.ts
import { Component, OnInit , Output, EventEmitter} from '@angular/core';
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.css']
})
export class HeaderComponent implements OnInit {
@Output() mode = new EventEmitter<boolean>();
setDark = false;
constructor() { }
ngOnInit(): void {
}
onChangeToggle() {
this.setDark = !this.setDark;
this.mode.emit(this.setDark);
console.log(this.setDark);
}
}
然后,我使用 Output 装饰器将该值传递给父组件,并在 app.component.ts 文件中接收它,以便所有其他组件也可以拥有主题(不仅仅是 HomeComponent)。
// app.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
setMode = false;
receiveMode($event) {
this.setMode = $event;
console.log("MODEEEE", this.setMode);
}
title = 'about-me';
}
然后我从 app.component.html 文件中的 app-header 接收布尔值
// app.component.html
<app-header (mode)="receiveMode($event)"></app-header>
<router-outlet></router-outlet>
我在styles.css 中将darkTheme 类添加到我的全局样式表中
.darkTheme {
background-color: black;
}
我想知道如何使用 ngClass 或 ngStyle 根据布尔值有条件地设置它。
【问题讨论】:
-
只需将
darkTheme类添加到您覆盖的文档正文中,位于styles.css 中
标签: javascript html css angular class