代码之家  ›  专栏  ›  技术社区  ›  Souad Guo Xiuhao

获取动态输入字段的值

  •  0
  • Souad Guo Xiuhao  · 技术社区  · 6 年前

    我有一个HTML模板:

        <div class="container">
            <div class="row">
                <div class="col-md-12">
                    <div data-role="dynamic-fields">
                        <div class="form-inline">
                            <div class="form-group">
                                <label class="sr-only" for="field-name">Link </label>
                                <input type="text" class="form-control" id="field-name" placeholder="Link" 
                                [(ngModel)]="HrefLink" name="HrefLink">
                            </div>
                            <span>-</span>
                            <div class="form-group">
                                <label class="sr-only" for="field-value">Label</label>
                                <input type="text" class="form-control" id="Label" placeholder="Label" 
                                [(ngModel)]="HrefLabel" name="HrefLabel">
                            </div>
                            <button class="btn btn-danger" data-role="remove">
                                <span class="glyphicon glyphicon-remove"></span>
                            </button>
                            <button class="btn btn-primary" data-role="add">
                                <span class="glyphicon glyphicon-plus"></span>
                            </button>
                        </div>  <!-- /div.form-inline -->
                    </div>  <!-- /div[data-role="dynamic-fields"] -->
                </div>  <!-- /div.col-md-12 -->
            </div>  <!-- /div.row -->
        </div>
    

    在这个简单的表单中,我可以添加一个或多个输入。这是一个活生生的例子: https://bootsnipp.com/snippets/VPRlZ

    我的问题是:如何在我的 angular component ? 我可以添加指令 ngModel 像上面一样,在每个输入中,但是所有指令都将具有相同的名称,并且我不会得到所有的值? ngModel公司 在更高的层次上 div form-group ...

    1 回复  |  直到 6 年前
        1
  •  0
  •   Abel Valdez    6 年前

    为什么不在对象数组(InputModel它是一个自定义接口或类)中建立输入量的基础,最后使用*ngfor来显示它们呢。

    输入模型

    {
      input_value: string,
      index_of: number,
      isDelete: boolean, //if false is "+" if true is  "x"
    }
    

    组件.ts

    inputValues: InputModel[] = [];
    count: number = 0;
    
    OnInit{
      this.inputValues.push({
          input_value:"",
          index_of: this.count,
          isDelete: true
      });
    }
    addMore(){
       this.inputValues.push({
          input_value:"",
          index_of: this.count++,
          isDelete: false
      });
    }
    

    <div *ngFor="let input of inputValues">
        <input [(ngModel)]="input.input_value" />
        <!-- TODO button with 'x' or '+' depends of input.isDelete -->
    </div>