在 Angular HTML 中使用枚举
Enumerations use in Angular HTML
我有一个枚举,想在 Angular 13 组件中使用它。
枚举:
export enum PropertyCode {
ALPHA = 'ALPHA',
BETA = 'BETA',
ZETA = 'ZETA',
}
TS:
import { Component, VERSION } from '@angular/core';
import { PropertyCode } from './property-code';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
})
export class AppComponent {
isHidden(code: PropertyCode): boolean {
switch (code) {
case PropertyCode.ALPHA: return false;
case PropertyCode.BETA: return true;
case PropertyCode.ZETA: return false;
}
}
}
HTML:
<ul>
<li *ngIf="!isHidden(PropertyCode.ALPHA)">Alpha</li>
<li *ngIf="!isHidden(PropertyCode.BETA)">Beta</li>
<li *ngIf="!isHidden(PropertyCode.ZETA)">Zeta</li>
</ul>
结果:
沙盒here
但是,我不想在组件中创建一个对应于该枚举的 属性...
对我来说没有任何意义,因为没有具体的信息要保留,我想使用HTML中的大写字母作为普通枚举。
所以我尝试了装饰器
import { PropertyCode } from './property-code';
export function PropertyCodeAware(constructor: Function) {
constructor.prototype.PropertyCode = PropertyCode;
}
并装饰了组件,但这似乎没有帮助
@PropertyCodeAware
export class AppComponent {
您必须在 AppComponent
中创建 属性
propertyCode = PropertyCode;
您可以在 app.component.html 模板中使用它
<ul>
<li *ngIf="!isHidden(propertyCode.ALPHA)">Alpha</li>
<li *ngIf="!isHidden(propertyCode.BETA)">Beta</li>
<li *ngIf="!isHidden(propertyCode.ZETA)">Zeta</li>
</ul>
非常简单的解决方案 ,在 .component.ts
public get PropertyCode() {
return PropertyCode;
}
不需要装饰器(删除)
我有一个枚举,想在 Angular 13 组件中使用它。
枚举:
export enum PropertyCode {
ALPHA = 'ALPHA',
BETA = 'BETA',
ZETA = 'ZETA',
}
TS:
import { Component, VERSION } from '@angular/core';
import { PropertyCode } from './property-code';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
})
export class AppComponent {
isHidden(code: PropertyCode): boolean {
switch (code) {
case PropertyCode.ALPHA: return false;
case PropertyCode.BETA: return true;
case PropertyCode.ZETA: return false;
}
}
}
HTML:
<ul>
<li *ngIf="!isHidden(PropertyCode.ALPHA)">Alpha</li>
<li *ngIf="!isHidden(PropertyCode.BETA)">Beta</li>
<li *ngIf="!isHidden(PropertyCode.ZETA)">Zeta</li>
</ul>
结果:
沙盒here
但是,我不想在组件中创建一个对应于该枚举的 属性...
对我来说没有任何意义,因为没有具体的信息要保留,我想使用HTML中的大写字母作为普通枚举。
所以我尝试了装饰器
import { PropertyCode } from './property-code';
export function PropertyCodeAware(constructor: Function) {
constructor.prototype.PropertyCode = PropertyCode;
}
并装饰了组件,但这似乎没有帮助
@PropertyCodeAware
export class AppComponent {
您必须在 AppComponent
中创建 属性propertyCode = PropertyCode;
您可以在 app.component.html 模板中使用它
<ul>
<li *ngIf="!isHidden(propertyCode.ALPHA)">Alpha</li>
<li *ngIf="!isHidden(propertyCode.BETA)">Beta</li>
<li *ngIf="!isHidden(propertyCode.ZETA)">Zeta</li>
</ul>
非常简单的解决方案 .component.ts
public get PropertyCode() {
return PropertyCode;
}
不需要装饰器(删除)