2017-10-17 30 views
1

我有一个具有各种属性的输入组件,其中一些属性使用装饰器@Input装饰。Angular 4:获取所有使用@Input装饰的属性

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

因此,例如,下面的类:

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

我想以下结果:

> [ 'min', 'max' ]

回答

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))); 
    } 


} 

希望它有帮助:)

+0

这将意味着这些属性需要先改变,对吗?我想从一开始就获得所有的属性,而不是在改变它们之后。 – Jelle

+0

是的属性需要改变,如果你使用它们,它们将从一开始就改变,但如果你只是声明属性,这将不适用于你 –

+0

这确实有效。同时我使用不使用@Input修饰符的另一种方法修复它。 – Jelle