angular - 在多个状态之间切换
问题描述
我有一个看起来像这样的组件:
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'myApp-component',
templateUrl: './myApp.component.html',
styleUrls: ['./myApp.component.scss']
})
export class MyApp implements OnInit {
myState1: boolean;
myState2: boolean;
myState3: boolean;
constructor() { }
ngOnInit() {
}
}
我的 HTML 看起来像这样:
<div (click)="myState1 = true; myState2 = false; myState3 = false">Button1</div>
<div (click)="myState2 = true; myState1 = false; myState3 = false">Button2</div>
<div (click)="myState3 = true; myState1 = false; myState2 = false">Button3</div>
所以基本上,当我点击一个时,另一个变成false
等等,我可以true
根据需要使用当前状态。因此,这并没有那么糟糕,但我想如果我得到三个以上的状态(我知道我会的),这最终会变得一团糟。
我如何使它更干净一点,这样我就可以拥有更多的状态,而不必担心 HTML 是一团糟?
解决方案
您可以使用仅存储在一个变量中的联合类型的字符串状态/状态。这样你就有了单一的事实来源,你只需要改变一个变量来改变状态。你可以很容易地检查状态。
...
type State = 'state1' | 'state2' | 'state3'
export class MyApp implements OnInit {
state: State;
constructor() { }
ngOnInit() {
}
someFunction() {
if (this.state === 'state1') // etc, or switch
}
}
<div (click)="state = 'state1'">Button3</div>
推荐阅读
- python - 您如何在 kivymd 中获取当前屏幕?
- javascript - React Native - 在循环中多次返回
- filter - 如何在 swt tableviewer 中过滤超链接单元格
- vue.js - 使用 vue-cli 创建的 Vue 2 项目的 npm 更新失败
- java - Glassfish和java输入到mysql DB
- apache-kafka - kafkacat 在 Windows 上不可用以能够 tp 消费?
- character-encoding - 如何使用可在任何应用程序中使用的短语列表制作自定义键盘?
- plot - 将 Highcharts 与 FastAPI 一起使用
- android - 如何为 larval 后端管理面板创建浏览器视图
- prestashop-1.7 - Prestashop orders_conf.html 与客户订单说明