angular - 如何在 Angular 4 中动态创建 formControlName?

标签 angular angular-reactive-forms angular-controller formarray

我想动态创建formControlName,这是我在组件中的代码,

CONTROLER CODE

ngOnInit() {
  this.rForm = this.fb.group({
     question_type_id: this.fb.array([]),
  });

  for (let i = 0; i < this.getQuestionsType.length; i++) {
     const control = <FormArray>this.rForm.controls['question_type_id'];
     control.push(this.initAddress(i));
  }
}

initAddress(i) {
  var ans = "is_answer_"+i;

  return this.fb.group({
    ans: ['']
  });
}

所以我想要 formControlName 像这样,

is_answer_0
is_answer_1
is_answer_2

最佳答案

在 es6 中可以使用 computed keys 创建对象。那么让我们使用它:

initAddress(i) {
  var ans = "is_answer_" + i;

  return this.fb.group({
    [ans]: ['']
    ^^^^^
  });
}

<强> Ng-run Example

你应该知道,如果 typescript 的目标是 es5,那么它会被转译为:

var controlConfig = {};
controlConfig[ans] = [''];

所以这是你的第二个选择

关于angular - 如何在 Angular 4 中动态创建 formControlName?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49461234/

相关文章:

angular - 将子组件隐藏在父组件中

angular - 如何从 Javascript 在 Cloud Firestore 中创建集合?

angular - 如何使用 Null 作为值 Angular Material Select

angular - 带有参数的自定义 Angular 验证器只运行一次

javascript - 如何访问 ES6 风格的 Angular Controller 中的作用域变量?

javascript - typescript parent / child

angular - 类型 'select2' 上不存在属性 'JQuery<HTMLElement>'

Angular 形式验证 : compare two fields in different form groups

javascript - AngularJS $scope 没有在 DOM 中更新

javascript - 如何在 Typescript 的 Angular 指令类中添加 Controller