Ich versuche gerade eine Tabelle aus der zu implementieren.Observable - EventEmitter anhören & initial ausgeben
Ich brauche Paginierung umfassen & Sortierung, so folgte ich dem Beispiel vorgesehen "Table mit sorting" &"Table mit Paginierung".
Der Unterschied, den ich habe, ist, dass meine Daten von einem REST-Endpunkt mit dem HttpClient
erhalten, dass Angular bietet.
Dies ist der aktuelle Code (vereinfacht):
Service:
@Injectable()
export class DataService {
constructor(private http: HttpClient) {
}
getData(page: number, size: number, sort: string): Observable<Data[]> {
const params = new HttpParams()
.set('page', String(page))
.set('size', String(size))
.set('sort', String(sort));
return this.http.get<Data[]>('/api/v1/data', {params: params});
}
}
Datasource:
export class DataDataSource extends DataSource<Data> {
constructor(private dataService: DataService, private sort: MdSort, private paginator: MdPaginator) {
super();
}
connect(collectionViewer: CollectionViewer): Observable<Data[]> {
const displayDataChanges = [
this.sort.mdSortChange,
this.paginator.page
];
return Observable.merge(...displayDataChanges).flatMap(() => {
let sortStr = this.sort.active + (this.sort.direction == 'asc' ? ',asc' : ',desc');
return this.dataService.getData(this.paginator.pageIndex, this.paginator.pageSize, sortStr);
});
}
disconnect(collectionViewer: CollectionViewer): void {
}
}
eigentliche Frage
Im Beispiel wird ein Behaviour
wird verwendet, um die Datenänderungen eine Event
zum Observable
jedes Mal zu emittieren. Da ich einen REST-Endpunkt verwende, habe ich dieses Verhalten nicht.
Folglich ist die angezeigte Tabelle leer, bis ein Paginierungs- oder Sortierereignis ausgegeben wird.
Wie triggert ich zuerst den Teilnehmer (die Tabelle), um zuerst die Daten zu laden?
Ich bin sehr neu in JavaScript & Rx, so entschuldige ich mich bereits im Voraus, wenn dies eine dumme Frage :)
Vielen Dank für Ihre Antwort! Leider war das nicht das Problem. Siehe meine Antwort. – JDC