在Angular> = 6模板中传播元素的属性

时间:2018-12-19 05:18:23

标签: javascript angular

我的代码中有这个...

@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>

欢迎任何帮助和想法。谢谢。

1 个答案:

答案 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]);
  }
}