Я создал компонент, объединяющий поле ввода для выполнения поиска, но когда я хочу, чтобы он связывался с каналом поиска, последний не отвечает, тогда как когда я интегрирую непосредственно ввод поля в теле, последний связывается с полем поиска. pipe.
компонент поиска сообщений html :
<input type="text" [(ngModel)]="searchedTerm">
компонент поиска сообщений ts :
import { Component, Input } from '@angular/core';
@Component({
selector: 'search-message',
templateUrl: 'search-message.component.html'
})
export class SearchMessageComponent {
@Input() messageSearch: string;
}
компонент приложения html :
<search-message [messageSearch]="searchTerm"></search-message>
<div class="card" *ngFor="let item of list | search: searchedTerm">
<span [innerHTML]="item.name"></span>
</div>
компонент приложения ts ::
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
searchTerm: string;
list = [
{ 'id': 1, 'name': 'apple'},
{ 'id': 1, 'name': 'pineapple'},
{ 'id': 1, 'name': 'jackfruit'},
{ 'id': 1, 'name': 'somefruit'},
];
}
конвейер поискового фильтра :
import { Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
@Pipe({
name: 'search'
})
export class SearchPipe implements PipeTransform {
constructor(private _sanitizer: DomSanitizer) {}
transform(list: any[], searchText: string): any[] {
if (!list) { return []; }
if (!searchText) { return list; }
searchText = searchText.toLowerCase();
let response = list.filter( item => {
return item.name.toLowerCase().includes(searchText);
});
return response;
}
}
https://stackblitz.com/edit/angular-searchpipe-gnqtgv
каким было бы решение?