Trong Góc 2 khi sử dụng ngFor làm cách nào để lấy chỉ mục gốc cho một đối tượng trong một mảng sau khi nó được truyền qua một đường ống?Góc 2 - ngFor chỉ số sau một đường ống
Ví dụ nếu tôi có một mảng các đối tượng như sau:
list = [{type:"A",id:111},{type:"A",id:222},{type:"B",id:333},{type:"A",id:444},{type:"B",id:555}];
Và bằng cách sử dụng ống sau:
@Pipe({
name: 'appFilter',
pure: false
})
export class AppFilterPipe implements PipeTransform {
// Single Argument Filter
transform(values: any[], arg1: any, arg2: any): any {
return values.filter(value => value[arg1] === arg2);
}
}
tôi tạo ra một ngFor như sau:
<div *ngFor= "let item of list|AppFilter:'type':'B'|let index=index;trackBy:trackByIndex;">
{{index}} - {{item.id}}
<input [(ngModel)]="list[index]" placeholder="item">
</div>
Vấn đề ở đây là chỉ số trả về bởi ngFor được dựa trên mảng mới được trả về bởi AppFilter đó là chỉ số 0 và 1. Th sẽ làm cho trường đầu vào tham chiếu sai chỉ mục tức là nó sẽ hiển thị đối tượng kiểu A vì nó tương ứng với chỉ mục 0,1 trong danh sách gốc. Để có được loại B tôi thực sự cần chỉ số 2,4.
Đánh giá cao công việc xung quanh việc này. Cũng trackByIndex tôi trong thành phần hiện trông giống như:
trackByIndex(index: number, obj: any): any {
return index;
}
Tôi nghĩ rằng nó sẽ là tốt nhất để lọc er trước khi bạn gán cho 'danh sách'. –