访问表单控件的方式不同

问题描述

我已经开始学习角度并开始我的宠物项目,我的角度形式定义为

      this.symptomForm = this.fb.group({
        symptoms: this.fb.array(this.createArray()),sNames: this.fb.array([this.createSnameFormGroup()])
      });

和模板如下

<form [formGroup]="symptomForm" (ngSubmit)="onSubmit()">
      <div>
        <div formArrayName="symptoms">
          <div *ngFor="let symptom of symptoms.controls; let i=index" class="symptomsName">
            <span class="button3">{{symptom.value}}</span>
            <span class="buttonDelete" (click)="removeSymptom(i)" >X</span>
          </div>
        </div>
        <div formArrayName="sNames">
            <div *ngFor="let name of symptomForm.get('sNames')['controls']; let i = index" >
                <div formGroupName="{{i}}" class="symptomsInput">
                <p>Enter New Symptom</p>
                <div class="newSymptomContainer">
                    <input type="text" formControlName="sName" class="form-control symptomInputBox" >
                    <div style="padding-top: 5px;"><span class="buttonAdd" (click)="addSymptom()" >+</span></div>
                </div>
              </div>
            </div>
          </div>
      </div>
      <button type="submit" class="btn btn-primary">Save</button> &nbsp; <button type="button" class="btn btn-danger" (click)="cancel()">Cancel</button>
    </form>

我可以使用*ngFor="let symptom of symptoms.controls; let i=index"遍历/渲染症状

但是当我对*ngFor="let symptom of sNames.controls; let i=index"之类的sName做同样的操作时,我得到一个错误提示

属性“ sNames”在类型上不存在 'SymptomComposerFormComponent'。

所以我在通过网络搜索后尝试了此方法,此方法*ngFor="let name of symptomForm.get('sNames')['controls'];

有效

但是我很好奇为什么它不像症状一样起作用?为什么可以与.get配合使用?

更新 其他信息

      createArray() {
        let formArray = [];
        for(var i =0; i< this.symptomsData.length; i++) {
          //console.log('asdf ; ',this.symptomsData[i])
          formArray.push(new FormControl(this.symptomsData[i]['value']));
        }
        return formArray;
      }

      createSnameFormGroup(): FormGroup {
        return new FormGroup({
          'sName': new FormControl('')
        })
      }

我们非常感谢您为消除疑问提供的帮助。

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)