Выбранная опция PrimeNG в раскрывающемся списке сбрасывается при привязке к свойству интерфейса

Вот как я объявил p-dropdown:

<p-dropdown name="taxOptions" [options]="taxOptions" [(ngModel)]="purchaseInvoiceDetail.tax"></p-dropdown>

Свойство taxOptions заполняется следующим образом:

this.taxOptions = [
      { label: 'Tax Exclusive', value: '0' },
      { label: 'Tax Inclusive', value: '1' }
];

Это PurchaseInvoiceDetail интерфейс:

export interface PurchaseInvoiceDetail {
  id: number,
  product: Product,
  quantity: number,
  unitPrice: number,
  discount: number,
  tax: string,
  purchaseInvoice: PurchaseInvoice
}

Таблица заполняется с использованием *ngFor в массиве PurchaseInvoiceDetail, то есть PurchaseInvoiceDetail[].

Таким образом, в каждой строке таблицы присутствует отдельный p-раскрывающийся список. Проблема в том, что когда я изменяю значение раскрывающегося списка и добавляю другой продукт, таблица обновляется, и выбранный параметр в предыдущем раскрывающемся списке сбрасывается, но не из purchaseInvoiceDetail.tax. Он только не может получить значение из purchaseInvoiceDetail.tax и показать его как выбранное значение в раскрывающемся списке. Почему это происходит?


person Community    schedule 19.10.2018    source источник


Ответы (1)


dropdowns: Array<SelectItem[]>;


<div *ngFor="let dropdown of dropdowns">
  <div *ngFor="let taxOption of dropdown">
     <p-dropdown name="taxOption" [options]="taxOption" 
     [(ngModel)]="purchaseInvoiceDetail.tax"></p-dropdown>
  </div>
</div>

Интерфейс SelectItem

export interface SelectItem {
  label: string;
  value: number;
}

это шаблон, которому вы можете следовать, просто адаптируйте его к своим рядам.

person devpato    schedule 19.10.2018
comment
Я объявил taxOptions как taxOptions: SelectItem[]; Это не позволяет мне объявить массив типа taxOptions следующим образом: dropdowns: taxOptions[]; - person ; 19.10.2018
comment
Не удается найти имя taxOptions. Я думаю, это потому, что мы не можем использовать переменную как тип. - person ; 19.10.2018