Tengo una aplicación que tiene un componente de gráfico y mi idea es que cuando haga clic en un gráfico, se producirá el filtrado correcto en el otro componente, que es una tabla de datos de preparación.
para ese fin, he creado un evento y puedo capturar el evento en el componente de la tabla
luego probé dos enfoques para filtrar la tabla correctamente
1.usando ngModel, configurando el valor según el evento - no funciona
<p-column field="result" [filter]="true" [style]="{'overflow':'visible'}" filterMatchMode="equals"> <ng-template let-col let-compliance="rowData" let-ri="rowIndex" pTemplate="body"> <span [ngClass]="{green: compliance.result=='SUCCESS', red: compliance.result=='FAILURE', orange: compliance.result=='EXCLUDED', grey: compliance.result=='UNCHECKED'}">{{compliance.result}}</span> </ng-template> <ng-template pTemplate="filter" let-col> <p-dropdown [options]="stationResults" [style]="{'width':'100%'}" appendTo="body" (onChange)="dt.filter($event.value,col.field,col.filterMatchMode)" styleClass="ui-column-filter" [(ngModel)]="selectedResult"></p-dropdown> </ng-template> </p-column>la tabla no está siendo filtrada
más tarde probé un segundo enfoque
2.agregar propiedad de filtros a la tabla de datos
this.stationService.upDownGraphEvent.subscribe(upDownEvent => { this.dt.filter(upDownEvent, 'result', 'equals'); this.selectedResult = upDownEvent; });en ese caso no pasa nada
¿Hay alguna función a la que deba llamar en el dt para obligarlo a volver a verificar sus filtros?
ACTUALIZAR ******
He probado el siguiente código pero sin éxito
this.dt.filter(upDownEvent, 'result', 'equals'); this.dt._filter(); this.dt.updateDataToRender(this.dt.filteredValue);Puede usar el enlace de propiedad globalFilter como se muestra a continuación
<input #filterText type="text" placeholder="Search text..."> <p-dataTable [value]="compliance" [globalFilter]="filterText">this.alertService.alertSwitchGraphEvent.subscribe(switchNameEvent => { if(this.dt.dataToRender){ this.dt.filter(switchNameEvent, 'switchName', 'equals'); } });Creé un evento externo que emitió, en el componente de tabla de datos me suscribo y luego llamo al dt.filter