【问题标题】:Passing enum class name though @Input通过@Input 传递枚举类名
【发布时间】:2019-08-26 00:07:11
【问题描述】:

我不知道角度是否可行,但我想在我的组件中传递一个类类型的参数。 目标是用我的枚举构建一个选择。但是枚举不同于所有的父母。

    public class HomeType{
        HOUSE, BUILDING
    }

    public class RoomType {
        KITCHEN, BEDROOM
    }

    @Component({
        selector: 'children',
        templateUrl: './chlidren.component.html'
    })
    export class childrenComponent {

       _enum: any;

       @Input('class')
       set class (clazz: any) {
           this._enum = Object.keys(clazz)
                          .map(key => ({ value:definition[key], title: key }))
           // clazz should be of type EnumType
       }
    }


// in parent html

    ...
    <children [class]="HomeType"></children>
    ...
    <children [class]="RoomType"></children>

如果你有任何类似的想法,请帮助我。

谢谢

【问题讨论】:

  • 枚举HomeType和RoomType之间有什么关系吗?
  • ++ 你问题中的枚举在哪里?

标签: angular input enums


【解决方案1】:

好吧,我不知道你为什么要这样做,但如果我理解正确的话,这样做的方法可能是这样的

import { Component } from '@angular/core';
export enum HomeType {
  HOUSE = "HOUSE",
  BUILDING = "BUILDING"
}

export enum RoomType {
  KITCHEN = "KITCHEN",
  BEDROOM = "BEDROOM"
}
@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  name = 'Angular';
  test: RoomType | HomeType = HomeType.HOUSE;

  ngOnInit() {
    this.name = this.test == RoomType.KITCHEN ? 'Kitcken' : 'Not a Kitchen :)'
  }
}

PS。但是正如你所看到的,如果你在两个枚举中都有相同的键,你就会遇到问题

https://stackblitz.com/edit/angular-bywsre

【讨论】:

  • 我编辑了我的问题,我认为它不够清楚。
  • 感谢您的帮助,但这不是我想要的。我找到了解决方法。我做了一些静态而不是动态的事情。感谢您的宝贵时间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
  • 2023-01-24
  • 2019-01-28
  • 1970-01-01
  • 2021-07-25
相关资源
最近更新 更多