Открыть новую строку по нажатию кнопки - PullRequest
0 голосов
/ 25 сентября 2019

Я создал угловую форму, в которой пользователь может выбрать время из указателя даты, и есть несколько выпадающих списков, по которым можно выбрать время, но я хочу кнопку «плюс» перед этой строкой, которая при нажатии откроет другую строку точно подпервая строка, чтобы пользователь мог добавить другое время и даты.Я использую Небулярную тему

Вот изображение enter image description here

Вот мой код формы

<form class="form-horizontal" (ngSubmit)="addTimes()" #form="ngForm">
          <div class="form-group row">
            <label for="inputEmail3" class="label col-sm-3 form-control-label">Course</label>
            <div class="col-sm-6">
              <nb-select selected="1" name="name" [(ngModel)]="schedule.course" fullWidth>
                <nb-option *ngFor="let x of courses" [value]="x.name">{{x.name}}</nb-option>
              </nb-select>
            </div>
          </div>
          <div class="form-group row">
            <label for="inputPassword3" class="label col-sm-3 form-control-label">Class Times</label>
            <div class="col-sm-6">
              <input nbInput
              placeholder="Form Picker"
              [nbDatepicker]="formpicker" fullWidth name="date" [(ngModel)]="schedule.date">
              <nb-datepicker #formpicker ></nb-datepicker>
              From
              <nb-select selected="0" name="hour" [(ngModel)]="schedule.hour" style="margin-top: 20px;">
                <nb-option value="0">--</nb-option>
                <nb-option value="1">1</nb-option>
                <nb-option value="2">2</nb-option>
                <nb-option value="3">3</nb-option>
                <nb-option value="4">4</nb-option>
                <nb-option value="5">5</nb-option>
                <nb-option value="6">6</nb-option>
                <nb-option value="7">7</nb-option>
                <nb-option value="8">8</nb-option>
                <nb-option value="9">9</nb-option>
                <nb-option value="10">10</nb-option>
                <nb-option value="11">11</nb-option>
                <nb-option value="12">12</nb-option>
              </nb-select>
              <nb-select selected="1" name="minute" [(ngModel)]="schedule.minute">
                <nb-option value="1">--</nb-option>
                <nb-option value="00">00</nb-option>
                <nb-option value="15">15</nb-option>
                <nb-option value="30">30</nb-option>
                <nb-option value="45">45</nb-option>
              </nb-select>
              <nb-select selected="1" name="timeofday" [(ngModel)]="schedule.timeofday">
                <nb-option value="1">--</nb-option>
                <nb-option value="AM">AM</nb-option>
                <nb-option value="PM">PM</nb-option>
              </nb-select>
              To 
              <nb-select selected="0" name="tohour" [(ngModel)]="schedule.tohour">
                <nb-option value="0">--</nb-option>
                <nb-option value="1">1</nb-option>
                <nb-option value="2">2</nb-option>
                <nb-option value="3">3</nb-option>
                <nb-option value="4">4</nb-option>
                <nb-option value="5">5</nb-option>
                <nb-option value="6">6</nb-option>
                <nb-option value="7">7</nb-option>
                <nb-option value="8">8</nb-option>
                <nb-option value="9">9</nb-option>
                <nb-option value="10">10</nb-option>
                <nb-option value="11">11</nb-option>
                <nb-option value="12">12</nb-option>
              </nb-select>
              <nb-select selected="1" name="tominute" [(ngModel)]="schedule.tominute">
                <nb-option value="1">--</nb-option>
                <nb-option value="00">00</nb-option>
                <nb-option value="15">15</nb-option>
                <nb-option value="30">30</nb-option>
                <nb-option value="45">45</nb-option>
              </nb-select>
              <nb-select selected="1" name="totimeofday" [(ngModel)]="schedule.totimeofday">
                <nb-option value="1">--</nb-option>
                <nb-option value="AM">AM</nb-option>
                <nb-option value="PM">PM</nb-option>
              </nb-select>
            </div>      
          </div>
          <div class="form-group row">
            <div class="offset-sm-3 col-sm-9">
              <button type="submit" nbButton status="primary">Add Time</button>
            </div>
          </div>
        </form>

1 Ответ

2 голосов
/ 25 сентября 2019

Может быть, вы можете добиться этого, используя [ngModelGroup]

, мы предполагаем, что у нас есть модель LabelCalss

export interface LabelCalss {
 label?: string;
}

, попробуйте это:

в вашем app.component.ts:

 formValue: any;

 tags: LabelCalss[] = [
   { label: "important" },
   { label: "difficult" }
 ]

 onSubmit(f: NgForm) {
   let tags = Object.keys(f.value).map(item => {
     return f.value[item];
   });
   this.formValue = tags;
   console.log(tags);
   // Object.keys because the new indexes are string
 }

 addNewRow() {
   this.tags.push({})
 }

и в вашем app.component.html

<code><form #f="ngForm" (ngSubmit)="onSubmit(f)">

  <div class="form-group" *ngFor="let x of tags; index as i" [ngModelGroup]="i">
    <input name="label"  class="form-control" [(ngModel)]="x.label">
  </div>

  <button type="submit" class="btn btn-primary">Submit</button>
</form>

<button (click)="addNewRow()" class="btn btn-success mt-5 mb-5">Add New Row</button>

<pre style="background-color:#ddd">
  {{tags|json}}
Представленный объект:{{FormValue |}} JSON

DEMO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...