2017-10-17 35 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