我有问题。我有一个城市列表,但是当我使用搜索栏时,我只希望显示具有相同名称的城市。
目前我正在尝试这个:
<ion-searchbar
[(ngModel)]="selectedCity"
[showCancelButton]="shouldShowCancel"
(ionCancel)="onCancel($event)">
</ion-searchbar>
<ion-item *ngFor="let city of cities | orderBy: name | filter: selectedCity">
<ion-label>{{city.name}}</ion-label>
<button (click)="onActive(city.detalhe.id)" *ngIf="city.active" ion-button outline item-right>Desativar</button>
<button (click)="onActive(city.detalhe.id)" *ngIf="!city.active" ion-button outline item-right>Ativar</button>
</ion-item>
但我知道它永远不会起作用,因为我将对象城市发送到管道"过滤器"而不是名称,我怎么能只发送管道的名称?我需要方法"onActive"的对象
管道:
@Pipe({
name: "filter",
pure: false
})
export class FilterArrayPipe implements PipeTransform {
transform(items: Array<any>, conditions: {[field: string]: any}): Array<any> {
return items.filter(item => {
for (let field in conditions) {
if (item[field] !== conditions[field]) {
return false;
}
}
return true;
});
}
}
而"选定城市"是一个字符串。当我用其他字符串尝试管道时,它可以工作。另一点,我需要过滤比较对象的名称,但在此之后我需要整个对象。
首先,看起来您需要向过滤器发送 2 个参数。第一个是字面上的"名称",第二个选择的城市在
我认为你已经从这里得到了订单通过示例
您也确实在按示例链接的顺序中看到了下面的评论......避免使用管道进行排序。在组件中执行此操作。我会亲自解决在组件级别做这两件事的问题。