angular - Oppdater innholdet i mat-tabellen ved å endre .filteredData-egenskapen


OPPDATERING: $scope.$apply(); ser ut til å være riktig tilnærming, men jeg bruker Angular6... hvordan ville jeg implementere den samme funksjonen?

Jeg prøver for øyeblikket å oppdatere en tabell på en bestemt måte. Jeg ønsker ikke å oppnå dette via .filter-egenskapen, tilpassede pipes osv., men jeg vil heller direkte tilordne dataene jeg ønsker å vise til en egenskap av dataSource.

Jeg har prøvd å tilordne dataSource.filteredData til dataene jeg ønsker å vise. Imidlertid, selv om dataSource.filteredData oppdateres, klarer ikke tabellen å gjenspeile slike endringer.

Endrer jeg den riktige variabelen? Hvordan ville jeg oppdatere visbart innhold i tabellen ved å redigere en egenskap av dataSource direkte, altså gjennom .filteredData?

Håper dette gir mening, hvis ikke, vennligst spør!

Svar #1

Hvis spørsmålet er om AngularJS, anbefaler jeg at du bruker $scope.$apply(). Dette vil tvinge en oppdatering av observatørene og en digest-syklus.

Når du setter dataene til dataSource.filteredData, kall $scope.$apply();

REDIGER:

Siden du bruker Angular med TypeScript, kan du gjøre det samme med detectChanges()

når du har tildelt dataene, bare ring,

chRef.detectChanges(); 

Du kan lese svaret mitt her

Svar #2

Fra det jeg har søkt, er ekvivalenten til $scope.$apply() i Angular 2+ å gjøre det på denne måten:

import { ChangeDetectorRef } from 'angular/core';

constructor(private chRef: ChangeDetectorRef){
}

Bruk deretter:

chRef.detectChanges(); // whenever you need to force update view

etter at du har satt dataene med dataSource.filteredData.

Relaterte artikler