我有一个具有2个输入的组件,一个已设置,一个是常规属性。
@Input() public set value(val: string) {
this._selectedOption =
this._options.find(o => o[this.selectedProperty || 'someDefault'] === val);
}
@Input() public selectedProperty: string;
在上面的代码中,selectedProperty在第一次有设置值时始终为空。
这是html:
<my-component [value]="someValue"
selectedProperty="value"
</my-component>
在此组件的其他外观中,selectedProperty将为空。
我如何第一次使selectedProperty不为空?
答案 0 :(得分:1)
一个有趣的答案。 @Inputs中集合的顺序就是它们在类中声明的顺序。
因此,首先要设置selectedProperty的属性应该是:
@Input() public selectedProperty: string;
@Input() public set value(val: string) {
this._selectedOption =
this._options.find(o => o[this.selectedProperty || 'someDefault'] === val);
}
这通常与JavaScript的工作方式有关,通常这是angular在类中查找输入的顺序。