angular - 如何在 DOM 中使用有限项定义 @input
问题描述
我想定义一种in文件@Input
类型,用户只能选择其中一个枚举项。Enum
ts
@Component({
selector: 'sale-tree',
templateUrl: 'sale-tree.component.html',
styleUrls: ['sale-tree.component.css'],
})
export class SaleTreeComponent {
@Input() businessDataTable: BusinessDataTableType;
constructor() {
}
}
export enum BusinessDataTableType {
Category,
SalesRegion,
Address
}
这是我的父组件:
<ng-template>
<sale-tree [businessDataTable]="BusinessDataTableType.Address"</sale-tree>
</ng-template>
但是当我决定重视businessDataTable
我面临的众多项目时,我只想看到这三个项目:
Category SalesRegion Address
有没有办法将输入项目限制为这三个项目?
解决方案
以下输出是我一直在寻找的:
@Component({
selector: 'sale-tree',
templateUrl: 'sale-tree.component.html',
styleUrls: ['sale-tree.component.css'],
})
const DataTableType = {
Address: 'Address' as 'Address',
Category: 'Category' as 'Category',
SalesRegion: 'SalesRegion' as 'SalesRegion'
}
type DataTableType= (typeof DataTableType)[keyof typeof DataTableType];
export {DataTableType};
export class SaleTreeComponent {
@Input() selectedBusinessDataTable: DataTableType;
@Output() nodeClick: EventEmitter<any> = new EventEmitter();
constructor() {
}
btnNodeClick(event) {
if (this.selectedBusinessDataTable === BusinessDataTableType.Address) {
// your code
}
this.nodeClick.emit(event.currentTarget.value);
}
}
export enum BusinessDataTableType {
Address = 'Address',
Category = 'Category',
SalesRegion = 'SalesRegion'
}
通过像上面这样声明输入参数,在父组件中,当你想为selectedBusinessDataTable
参数赋值时,你只会看到这三个项目:
推荐阅读
- python - 将实时流发送到单独的前端
- matlab - 从给定坐标列表的数组中提取值列表
- css - 修复了未知宽度元素上的菱形剪辑路径?
- ios - 由于 iOS 中“不同”视图层次结构中的锚点,自动布局约束崩溃,但是
- python - 当 Python 中的单独数组相等时,将变量设置为彼此相等
- matlab - 如何在 MATLAB 中生成具有给定均值、方差、偏斜和峰度的分布?
- sqlite - 查询在 SQLite 中不起作用
- ckan - CKAN DCAT 插件使用后如何查看我的文件
- visual-studio-2015 - 如何让 SSDT Publish 不生成 REVOKE CONNECT 脚本
- java - 为什么我的 3D 对象在绕 z 轴旋转时会突然翻转?