我的代码中有这个...
@Component({
selector: 'generic-input',
template: `<div><input [formControl]="control"/></div>`,
})
export class GenericInputComponent implements OnInit {
@Input('config') config = {placeholder: 'Testability', disabled: true, type: 'text'};
control;
constructor() { }
ngOnInit() {
this.control = new FormControl();
}
}
我想通过使用某种循环或其他方式在配置对象中分布属性,以便呈现的html 如下:
<div><input placeholder='Testability', disabled=true type='text' [formControl]="control"/></div>
注意: 以下是不可选项:
<div><input [placeholder]='config.placeholder', [disabled]='config.disabled' [formControl]="control"/></div>
欢迎任何帮助和想法。谢谢。
答案 0 :(得分:0)
1。添加模板变量:
<div><input #v [formControl]="control"/></div>
2。将ViewChild
绑定到ts:
@ViewChild('v')
v: ElementRef
3。在其nativeElement
属性中填充值:
const el = this.v.nativeElement
Object.keys(this.config).forEach(key => el[key] = this.config[key])
更新
完整的component.ts文件如下所示:
@Component({
selector: 'my-app',
template: `<div><input #v></div>`
})
export class AppComponent {
@ViewChild('v')
v: ElementRef;
config = { placeholder: 'Testability', disabled: true, type: 'text' };
ngOnInit() {
const el = this.v.nativeElement;
Object.keys(this.config).forEach(key => el[key] = this.config[key]);
}
}