Angular - удалить последний массив, который я добавил в свою группу форм. - PullRequest
1 голос
/ 13 июня 2019

На моем NgOnInit () Я создаю новую форму, подобную этой.

  ngOnInit(){
    this.expenseForm = this.fb.group({
      type: '',
      expenses: this.fb.array([this.buildExpense()])
    })
  }

У меня есть ключ с именем тип , который на моем объекте пусто, и ключ с именем расходы

эти ключ затрат получает массив каждый раз, когда пользователь нажимает кнопку.

  buildExpense(): FormGroup {
    return this.fb.group({
      description: '',
      quantity: '',
      price: ''
    })
  }

  addExpense(): void {
    this.expenses.push(this.buildExpense())
  }

HTML

  <button class="btn btn-outline-primary add" type="button" (click)="addExpense()">Add Expense</button>

Моя цель - удалить последний массив, добавленный в мою группу форм

Ответы [ 2 ]

3 голосов
/ 13 июня 2019

Я думаю, вы хотите удалить последний элемент формы Array расходов.Сначала создать метод get () для расходов следующим образом:

get expenses(): FormArray {
    return this.expenseForm.get('expenses') as FormArray;
  }

Затем удалить последний элемент из расходов формы Array

deleteExpense()
{
  if(this.expenses.length > 0)
  this.expenses.removeAt(this.expenses.length-1);
}
1 голос
/ 13 июня 2019

В соответствии с моим пониманием вопроса, который вы хотите удалить последний массив, так что используйте метод pop скажите, если есть метод удаления:

<button class="btn btn-outline-primary add" type="button" (click)="deleteExpense()">Delete Expense</button>

ТАК мы можем создать метод

     deleteExpense() : void {
    let index = this.expenses.length-1;
 if(index){
        (this. expenseForm.get(
          'expenses'
        ) as FormArray).removeAt(index);
      }
}
...