Получить значения динамических полей ввода - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть этот шаблон 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 Ответ

0 голосов
/ 05 сентября 2018

Почему бы вам не указать количество входных данных в массиве объектов (InputModel, это пользовательский интерфейс или класс) и, наконец, использовать * ngfor для их отображения.

InputModel

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

Component.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
  });
}

Шаблон HTML

<div *ngFor="let input of inputValues">
    <input [(ngModel)]="input.input_value" />
    <!-- TODO button with 'x' or '+' depends of input.isDelete -->
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...