【发布时间】:2020-09-16 17:21:49
【问题描述】:
您好,我使用这个 git 为我的项目启用暗模式。 https://github.com/ionic-team/ionic-conference-app
它可以工作,但我想将切换按钮放在页面中而不是 app.component.html
深色主题就是这样工作的。
-
app.component.html 中的切换按钮
<ion-app [class.dark-theme]="dark"> <ion-split-pane contentId="main-content"> <ion-item> <ion-icon slot="start" name="moon-outline"></ion-icon> <ion-label> Dark Mode </ion-label> <ion-toggle [(ngModel)]="dark"></ion-toggle> </ion-item> </ion-split-pane> </ion-app> -
将dark参数设置为false,以便在切换时改变
export class AppComponent implements OnInit { dark = false; constructor(
所以这行得通。如果它有效,但仅在页面中,而不是整个项目在黑暗中只有我设置切换的页面。所以我认为我必须将参数传递给 app.component.ts?
我添加了一个新服务 Global Service
global.service.ts
import {BehaviorSubject} from "rxjs";
export class GlobalService {
public darkModeToggleState = new BehaviorSubject(false);
constructor(){}
}
app.component.ts
import { GlobalService } from './services/global.service/global.service';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.scss'],
providers: [GlobalService],
})
export class AppComponent implements OnInit {
dark;
app.component.html 将类更改为深色
<ion-app [class.dark-theme]="dark">
<ion-router-outlet></ion-router-outlet>
</ion-app>
somepage.html
<ion-toggle *ngIf="index === 5" [(ngModel)]="dark" (ionChange)="darkToggled($event)"></ion-toggle>
somepage.ts
import { GlobalService } from '../../services/global.service/global.service';
constructor(){}
darkToggled(event){
this.globalSrvc.darkModeToggleState.next(event.target.chacked)
}
【问题讨论】: