#angular #ngx-pagination
#angular #ngx-нумерация страниц
Вопрос:
<tr *ngFor="let data of rawDataListDup | filter:searchText | paginate: { itemsPerPage: 100,currentPage: q }; let idx = index">
<td>
<select (change)="AssigneeChange(data,$event.target.value,idx)">
<option [value]="data1.id" *ngFor="let data1 of groupList">{{ data1.name }}</option>
</select>
</td>
</tr>
Рассматривайте rawDataListDup
элементы как 300
. В приведенном выше коде idx
значение сбрасывается на 0, когда я перехожу на следующую страницу в таблице.
AssigneeChange(data,id,idx){
console.log(data,id,idx)
}
Рассмотрим текущий индекс rawDataListDup
as 100
. В консоли я получаю idx = 0
вместо idx = 100
того, когда AssigneeChange
вызывается функция. Это происходит, когда я нахожусь в page = 2
таблице. На каждой странице будет 100 элементов.
Как решить эту проблему?
Ответ №1:
<tr *ngFor="let data of rawDataListDup
| filter:searchText
| paginate: { itemsPerPage: 100,currentPage: q };
let idx = index paginate.currentPage * paginate.itemsPerPage;
">
добавьте для индексации кратное между pageSize
и itemsPerPage
.
пример:
page 0: item 0 = 0 0 * 10 = 0
page 0: item 1 = 1 0 * 10 = 1
page 1: item 0 = 0 1 * 10 = 10
page 1: item 1 = 1 1 * 10 = 11
Комментарии:
1.
Parser Error: Unexpected token ; at column 161 in [let data of rawDataListDup | filter:searchText | paginate: { itemsPerPage: 100,currentPage: q }; let idx = index paginate.currentPage * paginate.itemsPerPage;]
2. попробуйте удалить
;
с конца3.
Parser Error: Unexpected token , expected identifier, keyword, or string at column 114 in [let data of rawDataListDup | filter:searchText | paginate: { itemsPerPage: 100,currentPage: q }; let idx = index paginate.currentPage * paginate.itemsPerPage]
Ответ №2:
передайте «q» вместо «idx» для назначения функции изменения.
Ответ №3:
Пожалуйста, обратитесь к этому для решения..
Мы можем получить абсолютный индекс, используя приведенный ниже код, поскольку paginate его не распознает.
AssigneeChange(data,id,idx){
idx = 100 * (this.q - 1) idx;
console.log(data,id,idx)
}
Ответ №4:
Решение: использование indexOf()
метода для получения индекса элемента в цикле.
<tr *ngFor="let data of rawDataListDup | filter:searchText | paginate: { itemsPerPage: 100,currentPage: q };>
<td>
<select (change)="AssigneeChange(data,$event.target.value, rawDataListDup.indexOf(data)">
<option [value]="data1.id" *ngFor="let data1 of groupList">{{ data1.name }}</option>
</select>
</td>
</tr>