【发布时间】:2019-01-10 03:57:43
【问题描述】:
我有以下自定义组件
<form-text
[(ngModel)]="dataItem.prop1">
</form-text>
在这种情况下如何从类“prop1”中获取属性名称?
@Component({
selector: 'form-text',
template: `
<div>
<label *ngIf="label" [attr.for]="identifier">{{label}}</label>
<input
type="text"
[(ngModel)]="value"
/>
</div>
`,
providers: [{
provide: NG_VALUE_ACCESSOR,
useExisting: FormTextComponent,
multi: true,
}],
})
export class FormTextComponent extends ElementBase<string>{
@ViewChild(NgModel) model: NgModel;
constructor(@Optional() @Inject(NG_VALIDATORS) validators: Array<any>){
super(validators);
}
}
angular 不知何故知道它应该更新哪个属性。 我想获取此属性的引用或名称。 谢谢
【问题讨论】:
-
也许它隐藏在元数据属性中? ???????????????谁知道...
-
这是一个很好的问题,我也想做同样的事情,这可以让我自动应用道具名称作为输入名称值,从而简化更通用的组件。如果我遇到答案,我会更新!
-
感谢@Jessycormier,如果您这样做,我将非常感激
-
到目前为止,我采用的解决方案类似于建议的答案,在我的组件上创建一个
@Input() name;(在我的情况下,我将它放在我的ElementBase中,因为我正在扩展我的组件的公共部分的基类)。我不确定是否有手动获取属性名称的方法,因为您绑定的是属性值而不是对象,因此这里没有原型或反向查找功能。如果我在我的角度冒险中遇到了什么,我一定会传递信息!祝你好运。 -
谢谢@Jessycormier。我认为这个名称可能隐藏在某个反射元数据中,因为 Angular 大量使用反射元数据库,也许它也将它存储在某个地方,谁知道......无论如何,这很难找到和/或调试。跨度>
标签: angular reflection reflect-metadata