【问题标题】:Angular 4: Get all properties that are decorated with @InputAngular 4:获取所有用@Input 装饰的属性
【发布时间】:2018-03-29 00:02:34
【问题描述】:

我有一个具有多种属性的输入组件,其中一些使用@Input 装饰器进行装饰。

如何在运行时查看哪些属性具有 @Input 装饰器?

例如下面的类:

export class MyInputComponent {
    @Input() min: number;
    @Input() max: number;
    ignoreMe: number;
}

我想要以下结果:

> [ 'min', 'max' ]

【问题讨论】:

    标签: angular


    【解决方案1】:

    这个问题没有官方的解决方案,但是如果你的输入被使用了,你可以通过执行OnChanges来观察他们的变化并得到他们的名字:

    export class MyInputComponent implements OnChanges{
        @Input() min: number;
        @Input() max: number;
        ignoreMe: number;
        list = [];
    
        ngOnChanges(changes: SimpleChanges) {   
          for (let propName in changes) {
             this.list.push(propName); 
        }
        console.log("list :",Array.from(new Set(this.list)));
      }
    
    
    }
    

    希望对你有帮助:)

    【讨论】:

    • 这意味着需要先更改这些属性,对吗?我想从一开始就获取所有属性,而不是在更改它们之后。
    • 是的,属性需要更改,如果您使用它们,它们将从一开始就更改,但如果您只是声明属性,这对您不起作用
    • 这确实有效。同时,我使用不使用 @Input 装饰器的不同方法修复它。
    猜你喜欢
    • 1970-01-01
    • 2017-07-16
    • 2018-02-25
    • 2020-10-16
    • 2017-03-15
    • 1970-01-01
    • 2020-03-03
    • 2020-04-20
    • 1970-01-01
    相关资源
    最近更新 更多