DataTable
устарело, используйте TurboTable
.Я полагаю, что вы можете получить ссылку на компонент таблицы, используя ViewChild('dt') dt: Table
, передать ее потомку и сделать dt.filterGlobal($event.target.value, 'contains')
<input (input)="dt.filterGlobal($event.target.value, 'contains')" type="text" pInputText >
Если вы можете предоставить отзыв, я могу взглянуть на вашу проблему.
Не уверен, что подход EventEmitter
будет работать, если только DataTable
не предоставляет функцию filter()
.Вы можете напрямую связываться с #gb
в ChildComponent
, если хотите.
Вот пример
child.component.ts
import { Component, Output, EventEmitter, ViewChild } from '@angular/core';
@Component({
selector: 'child-component',
template: `<input #gb type="text" placeholder="Search">`
})
export class ChildComponent {
@ViewChild('gb') gb: any;
}
app.component.html
<child-component #child></child-component>
<!-- You may as well need *ngIf="child.gb" in p-dataTable -->
<p-dataTable
[value]="data"
[globalFilter]="child.gb.nativeElement">
Нет гарантий того, насколько хорошо это будет работать, лучше изменить на TurboTable
трассия не такая жесткая, как может показаться.