所以我試圖建立一個自定義管道在ngFor循環中執行多個值的搜索過濾器。我已經找了好幾個小時做了一個很好的工作示例,其中大部分都基於以前的版本,似乎並不奏效。所以我正在構建Pipe並使用控制檯爲我提供值。但是,我似乎無法獲得輸入文本。角度4過濾器搜索自定義管道
這裏是以前的地方我都找了找工作的例子:
http://jilles.me/ng-filter-in-angular2-pipes/
https://plnkr.co/edit/vRvnNUULmBpkbLUYk4uw?p=preview
https://www.youtube.com/results?search_query=filter+search+angular+2
https://www.youtube.com/watch?v=UgMhQpkjCFg
這裏是我目前擁有的代碼:
component.html
<input type="text" class="form-control" placeholder="Search" ngModel="query" id="listSearch" #LockFilter>
<div class="panel panel-default col-xs-12 col-sm-11" *ngFor="let lock of locked | LockFilter: query">
<input type="checkbox" ngModel="lock.checked" (change)="openModal($event, lock)" class="check" id="{{lock.ID}}">
<label for="{{lock.ID}}" class="check-label"></label>
<h3 class="card-text name" ngModel="lock.name">{{lock.User}}</h3>
<h3 class="card-text auth" ngModel="lock.auth">{{lock.AuthID}}</h3>
<h3 class="card-text form" ngModel="lock.form">{{lock.FormName}}</h3>
<h3 class="card-text win" ngModel="lock.win">{{lock.WinHandle}}</h3>
</div>
pipe.ts
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'LockFilter'
})
export class LockFilterPipe implements PipeTransform {
transform(locked: any, query: string): any {
console.log(locked); //this shows in the console
console.log(query); //this does not show anything in the console when typing
if(!query) {
return locked;
}
return locked.filter((lock) => {
return lock.User.toLowerCase().match(query.toLowerCase());
});
}
}
我已導入管插入模塊。
對於Angular 4我還是有點新,並且試圖弄清楚如何使這項工作成爲可能。無論如何感謝您的幫助!
我想我需要更具體。我已經在JS中構建了一個篩選器搜索,它不會過濾所有選項,這正是我想要做的。不只是過濾用戶名。我正在過濾所有4個數據。我選擇了一個Pipe,因爲這是Angular建議你在AngularJS中使用它們時所做的。我只是試圖重新創建我們在AngularJS中使用的過濾器管道,他們爲了性能而刪除了它們。我發現的所有選項都不起作用,或者來自以前的Angular版本。
如果您需要其他任何代碼,請告訴我。
實現非輸出格式化業務邏輯的管道在Angular中被視爲反模式。而是使用函數來封裝邏輯。然後在你的綁定中使用它:'let locked filteredLocks()' –
我在這裏有一個例子:https://stackoverflow.com/questions/45199776/custom-pipe-to-sort-array-of-array – DeborahK
是! Deborah的回答是要走的路 –