В угловом 2 у нас нет предопределенного фильтра и порядка, как это было с AngularJs, нам необходимо создать его для наших требований. Время убивать, но мы должны это сделать (см. No FilterPipe или OrderByPipe). В этой статье мы рассмотрим, как мы можем создать фильтр под названием pipe в угловом 2 и функцию сортировки под названием Order By. Давайте использовать для этого простой массив данных json. Вот JSON мы будем использовать для нашего примера
Сначала мы рассмотрим, как использовать трубу (фильтр) с помощью функции поиска:
Создать компонент с именем category.component.ts
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-category',
templateUrl: './category.component.html'
})
export class CategoryComponent implements OnInit {
records: Array<any>;
isDesc: boolean = false;
column: string = 'CategoryName';
constructor() { }
ngOnInit() {
this.records= [
{ CategoryID: 1, CategoryName: "Beverages", Description: "Coffees, teas" },
{ CategoryID: 2, CategoryName: "Condiments", Description: "Sweet and savory sauces" },
{ CategoryID: 3, CategoryName: "Confections", Description: "Desserts and candies" },
{ CategoryID: 4, CategoryName: "Cheeses", Description: "Smetana, Quark and Cheddar Cheese" },
{ CategoryID: 5, CategoryName: "Grains/Cereals", Description: "Breads, crackers, pasta, and cereal" },
{ CategoryID: 6, CategoryName: "Beverages", Description: "Beers, and ales" },
{ CategoryID: 7, CategoryName: "Condiments", Description: "Selishes, spreads, and seasonings" },
{ CategoryID: 8, CategoryName: "Confections", Description: "Sweet breads" },
{ CategoryID: 9, CategoryName: "Cheeses", Description: "Cheese Burger" },
{ CategoryID: 10, CategoryName: "Grains/Cereals", Description: "Breads, crackers, pasta, and cereal" }
];
// this.sort(this.column);
}
}
<div class="col-md-12">
<table class="table table-responsive table-hover">
<tr>
<th >Category ID</th>
<th>Category</th>
<th>Description</th>
</tr>
<tr *ngFor="let item of records">
<td>{{item.CategoryID}}</td>
<td>{{item.CategoryName}}</td>
<td>{{item.Description}}</td>
</tr>
</table>
</div>
2.Nothing специальными в этом коде просто инициализировать наши записи переменной со списком категорий, две других переменным isDesc и столбец объявляется, которые мы будем использовать для сортировки последних. В конце добавлено this.sort (this.column); последнее мы будем использовать, как только у нас будет этот метод.
Note templateUrl: './category.component.html', который мы создадим рядом, чтобы показать записи в формате tabluar.
Для этого создать HTML-страницу с именем category.component.html, Whith следующий код:
3.Here мы используем ngFor повторить записи и шоу построчно, попробуйте запустить его, и мы можем увидеть все записи в таблице.
Поиск - Фильтр Записи
Скажем, мы хотим найти таблицу по имени категории, для этого давайте добавим одно текстовое поле для ввода и поиска
<div class="form-group">
<div class="col-md-6" >
<input type="text" [(ngModel)]="searchText"
class="form-control" placeholder="Search By Category" />
</div>
</div>
5. Теперь нам нужно создать канал для поиска результата по категориям, потому что фильтр недоступен, так как он уже был в angularjs.
Создайте файл category.pipe.ts и добавьте в него следующий код.
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({ name: 'category' })
export class CategoryPipe implements PipeTransform {
transform(categories: any, searchText: any): any {
if(searchText == null) return categories;
return categories.filter(function(category){
return category.CategoryName.toLowerCase().indexOf(searchText.toLowerCase()) > -1;
})
}
}
6.Here в трансформации методы мы принимающий список категорий и поиск текста для поиска записи/фильтра в списке. Импорт этого файла в наш файл category.component.ts, мы хотим использовать его здесь, следующим образом:
import { CategoryPipe } from './category.pipe';
@Component({
selector: 'app-category',
templateUrl: './category.component.html',
pipes: [CategoryPipe] // This Line
})
7.Our ngFor петля теперь нужно, чтобы наши трубы для фильтрации записей поэтому изменить его this.You можно увидеть результат в изображении ниже
enter image description here
вы можете создавать собственные трубы для того, что будет лучше –
можете ли вы привести пример? – TheUnreal
Вы можете использовать [this] (https://angular.io/docs/ts/latest/tutorial/toh-pt6.html), взглянуть на заголовок HeroSearchComponent или [this] (https: // угловой .io/docs/ts/latest/guide/server-communication.html) в качестве контрольной точки. – ulubeyn