typescript - FEL ObjectUnsubscribedErrorImpl vid användning av angular-datatable med angular 7
Jag försöker visa Datatable i ett modellfönster. Första gången kunde jag se skärmen som förväntat. Efter att ha stängt modellfönstret försöker jag nu visa resultatet i modellfönstret, men från andra gången visas inte Datatable med sökrutan och pagineringen.
kan någon hjälpa mig att fixa detta problem.
Förväntad :
andra :
Fel :
min.komponent.ts
@ViewChild(DataTableDirective)
dtElement: DataTableDirective;
dtOptions: DataTables.Settings = {};
// We use this trigger because fetching the list of persons can be quite long,
// thus we ensure the data is fetched before rendering
dtTrigger: Subject<any> = new Subject();
ngOnInit() {
this.service.getQueryResult(this.saveIteratorParams).subscribe( data => {
if (data.success !== false) {
this.queryViewResultL = data.payload;
this.tableDataList = data.payload.molResults;
if (this.tableDataList !== null || this.tableDataList !== undefined) {
this.theadData = Object.keys(this.tableDataList[0]);
// Calling the DT trigger to manually render the table
this.dtOptions = {
pagingType: 'full_numbers',
pageLength: 10
};
this.dtTrigger.next();
}
}
ngAfterViewInit(): void {
this.dtTrigger.next();
// console.log('ngAfterViewInit');
}
rerender(): void {
this.dtElement.dtInstance.then((dtInstance: DataTables.Api) => {
// Destroy the table first
dtInstance.destroy();
// Call the dtTrigger to rerender again
this.dtTrigger.next();
// if (this.dtTrigger.observers) { this.dtTrigger.next(); }
});
}
ngOnDestroy(): void {
// Do not forget to unsubscribe the event
this.dtTrigger.unsubscribe();
console.log('this.dtTrigger.unsubscribe()', this.dtTrigger);
}
Svar #1
Jag vet inte det exakta problemet i ditt fall. Jag fick samma fel medan jag arbetade med mitt projekt. Detta fel betyder vanligtvis att prenumeranten eller huvudmetoden har ändrats av någon annan kod vilket ledde till att den avprenumererade. Du kan felsöka det med hjälp av utvecklarverktygen. På höger sida hittar du watch. Skriv uttryckets namn där, till exempel this.service.getQueryResult(this.saveIteratorParams). Från denna kod tror jag att destroy avbryter det.


