Я пытаюсь выполнить следующее решение: http://plnkr.co/edit/UbHxQNjV1G8kXsIY2GyF?p=previewAngular2 фильтр трубы
Но по какой-то причине он не работает. Моя реализация выглядит так:
фильтр трубы
import {Pipe, PipeTransform} from '@angular/core';
@Pipe({
name: 'filter'
})
export class FilterPipeService implements PipeTransform {
transform(value: any, args: string[]): any {
let filter = args[0];
if (filter && Array.isArray(value)) {
let filterKeys = Object.keys(filter);
return value.filter(item =>
filterKeys.reduce((memo, keyName) =>
memo && item[keyName] === filter[keyName], true));
} else {
return value;
}
}
}
мои-support.component.ts
import { FilterPipeService } from '../../services/filter-pipe.service'
@Component({
selector: 'nmg-mysupport',
directives: [CORE_DIRECTIVES,
FORM_DIRECTIVES,
...,
template: require('./my-support.component.html'),
styles: [require('./my-support.component.scss')],
pipes: [FilterPipeService]
})
export class MySupportComponent implements OnInit {
public faqList;
public listFilter;
constructor() {
this.faqList = [
{'question' : 'First Question', 'answer': 'Answer to First Question'},
{'question' : 'Second Question', 'answer': 'Answer to Second Question'},
{'question' : 'Third Question', 'answer': 'Answer to Third Question'},
{'question' : 'Fourth Question', 'answer': 'Answer to Fourth Question'},
]
}
}
И этот HTML
<div class="col-sm-9 col-sm-offset-3 col-md-10 page-header col-md-offset-2">
<h1 class="headline">Support/Hilfe</h1>
</div>
<div class="contentWrapper col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
<div class="content">
<div class="input-group input-group-sm" style="margin-bottom: 10px;">
<input value="" class="form-control" placeholder="Suche" autofocus #listFilter (keyup)="0">
<div class="input-group-btn">
<button type="submit" class="btn btn btn-default btn-flat"><i class="fa fa-search"></i></button>
</div>
</div><br><br>
<tabset>
<tab heading="Media Grid Hilfe"><br>
</tab>
<tab heading="Häufig gestellte Fragen"><br>
{{listFilter.value}}
<div *ngFor="let faqItem of faqList | filter:{question: listFilter.value}">
<h3> {{ faqItem.question }}</h3>
<h4> {{ faqItem.answer }}</h4>
</div>
</tab>
<tab heading="Glossar"><br>
</tab>
</tabset><br>
</div>
Если Я пытаюсь t o фильтровать, введя что-нибудь в нем, ничего не работает, и я не получаю никаких ошибок.