【问题标题】:Creating ion-input's dynamically动态创建离子输入
【发布时间】:2017-10-29 23:49:39
【问题描述】:

我正在尝试在 Form 内动态创建一个包含 6 列的行,该行将具有 6 个离子输入,并通过 ngModel 检索它。问题是我怎样才能让 ngModel 标签也被动态创建,所以它们是独一无二的? atm 他们被重复了,这不是我需要的。

    <ion-content>
     <ion-grid>
      <form #f="ngForm" (ngSubmit)="postDados(f)" >
       <ion-row class="row header">
        <ion-col class="col">Nervos</ion-col>
        <ion-col class="col">Service Code</ion-col>
        <ion-col class="col">Pay Limit</ion-col>
        <ion-col class="col">Account Number to Use</ion-col>
        <ion-col class="col">Account Number to Use</ion-col>
        <ion-col class="col">Account Number to Use</ion-col>        
   </ion-row>
   <ion-row class="row" *ngFor ="let nervo of nervos">
      <ion-col class="col">
          <ion-input type="text" name="categoria" ngModel #categoria="ngModel"></ion-input>  
      </ion-col>
      <ion-col class="col">
          <ion-input type="text" name="nome" ngModel #nome="ngModel"></ion-input>
      </ion-col>
      <ion-col class="col"></ion-col>
      <ion-col class="col"></ion-col>
      <ion-col class="col"></ion-col>
      <ion-col class="col"></ion-col>             
  </ion-row>
</form>
  <ion-row>
    <ion-col col-6>
        <ion-input type="text" [(ngModel)]="nomeNervoNovo" name="nomeNervoNovo"></ion-input> 
    </ion-col>
    <ion-col col-6>
        <button ion-button (click)="pushRow(nomeNervoNovo)" color="danger">
            Inserir
        </button> 
    </ion-col>  
    </ion-row>                      
    <ion-item>
          <button [disabled]="cadastro.invalid" ion-button full block color="danger">Enviar</button>
        </ion-item>

该按钮会推动 nervos 数组中的一个新项目,因此它会创建一个包含 6 列的新行。

【问题讨论】:

    标签: angular ionic-framework


    【解决方案1】:

    由于这是一个表单,因此您可以与ngModelname 一起注册表单控件。因此,使每个名称都是唯一的,意味着您的字段都是唯一的,而不是指同一个字段。因此,对于您的迭代跟踪当前索引,并将索引值合并到您的 name 属性中,例如您喜欢的,例如:

    <!-- track index of iteration -->
    <ion-row class="row" *ngFor ="let nervo of nervos; let i = index">
      <ion-col class="col">
        <!-- add index to 'name' attribute -->
        <ion-input type="text" name="categoria{{i}}" ngModel #categoria="ngModel"></ion-input>  
      </ion-col>
      <ion-col class="col">
        <ion-input type="text" name="nome{{i}}" ngModel #nome="ngModel"></ion-input>
      </ion-col>
    

    【讨论】:

    • 感谢工作的人,我正要尝试使用 FormArray 使用此方法创建一个 formarray pushRow(){ const control = new FormControl(null); (this.form.get('nervosControl')).push(control)} 为 1 个输入字段工作,但我在尝试在该方法上执行 6 次时出错,因为我的输入需要 6 个数组, “类型 void 没有兼容的调用签名”不知道为什么,因为更简单,所以暂时不使用你的方法。祝你有美好的一天
    • 我认为它必须是一个表单数组 =/ 这种方式与 {{i}} 使它们独一无二,但每个输入都被视为 json 中的 1 个单个对象,我每行需要 1 个对象,我认为 formarray 可能是唯一的方法,你怎么看?
    • 不客气!如果您想采用我自己更喜欢的反应式路线,因为您可以更好地控制表单。我认为我的这个答案对于如何处理formarray的(?)非常清楚,你需要将你的字段(每一行)作为一个formgroup推送到你的formarray,如果我正确理解你的目的,那应该可以正常工作:) :) stackoverflow.com/questions/43520010/…
    • 很好,这个帖子很完美,我把它付诸实践了
    猜你喜欢
    • 2016-11-08
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    相关资源
    最近更新 更多