app.component.html
<div class="input-group">
<input type="text" #searchBox class="form-control chapter-filter" placeholder="Search chapter..." name="chapter" [(ngModel)]="searchText" />
** 基于searchText 我正在过滤章节**
search-filter.pipe.ts
transform(items, searchText, searchField: string) {
let filteredList = [];
if (searchText) {
return items.filter(item => {
searchText = searchText.trim().toLowerCase();
let itemName = item[searchField].trim().toLowerCase();
if (itemName.indexOf(searchText) > -1) {
filteredList.push(item);
return filteredList;
}
})
} else {
return items;
}
}
问题是当我过滤任何章节时它工作正常,但章节索引是根据过滤的章节设置的。
-->
假设我有 3 章
当我输入三个时,它只显示三个。没错,但它的索引现在是 0。 我怎样才能让它保持索引 2。我的意思是它应该过滤但不应该改变索引。
答案 0 :(得分:0)
这里有几个选项。
<li (click)="changeChapter(chapter)" *ngFor="let chapter of chapters | searchFilter">
并在原始数组中查找索引
changeChapter(chapter) {
this.chapterIndex = this.chapters.indexOf(chapter);
// and whatever ...
}
Chapter
的属性<li (click)="changeChapter(chapter)" *ngFor="let chapter of chapters | searchFilter">
{{ chapter.chapterIndex }} - {{ chapter.name }}
</li>
<li (click)="changeChapter(chapter)" *ngFor="let chapter of displayedChapters">
</li>
displayedChapters: Chapter[];
private allChapters: Chapter[];
changeChapter() {
// whatever happens here...
}