«ObjectUnsubscribeedError» - при перезагрузке таблицы угловых данных с помощью вызова get - PullRequest
0 голосов
/ 11 июня 2018
this.Showdata = false;
this.showSpinner = true;
this.subscription = this.assessmentlistService.getAll().subscribe(response => {
        if (response != null) {
            if (response.StatusCode >= 200 && response.StatusCode < 300) {
                this.AssessmentList = response.Data;
                this.Showdata = true;
            }
            else {
                //this.AssessmentList = [];
            }
            this.updateAssessmentList.next();
        }
        this.showSpinner = false;
    },
    error => {
        this.messageData = new MessageData();
        this.messageData.Message = "Server Error, please try again later";
        this.messageData.ShowErrorMessage = true;
        this.showSpinner = false;
    }
);

Это мой метод вызова API.Я попробовал способ отписаться.Это не работает. Ниже приведен код, который я использовал для обновления таблицы данных за каждую 1 минуту.

Refresh() {
    setInterval(() => {
        this.subscription.unsubscribe();
        this.Showdata = false;
        this.showSpinner = true;
        this.subscription = this.assessmentlistService.getAll().subscribe(response => {
                if (response != null) {
                    if (response.StatusCode >= 200 && response.StatusCode < 300) {
                        this.AssessmentList = response.Data;
                        this.Showdata = true;
                    }
                    else {
                        //this.AssessmentList = [];
                    }
                    this.updateAssessmentList.next();
                }
                this.showSpinner = false;
            },
            error => {
                this.messageData = new MessageData();
                this.messageData.Message = "Server Error, please try again later";
                this.messageData.ShowErrorMessage = true;
                this.showSpinner = false;
            }
        );
    }, 60000);
}

Iam Получение этой ошибки при попытке перезагрузить таблицу данных.

ObjectUnsubscribeedError {имя: «ObjectUnsubscribeedError», стек: «ObjectUnsubscribeedError: объект отписался» a… odule / AssessmentListComponent.ngfactory.js: 549: 5) », сообщение:« объект отписан », ngDebugContext: DebugConext: DebugConext: DebugContext: DebugConƒxt_Exjectобъект отписалсяобъект отписался↵ в новой ObjectUnsubscribeedError (webpack-internal: ///./node_modules/rxjs/_esm5/util/ObjectUnsubscribeedError.js: 22: 26) ↵ в Subject._trySubscribe (webpack-internal: ///./node_modules/rxj)/_esm5/Subject.js:105:19)↵ в Subject.Observable.subscribe (webpack-internal: ///./node_modules/rxjs/_esm5/Observable.js: 166: 93) ↵ в DataTableDirective.ngOnInit (webpack-internal: ///./node_modules/angular-datatables/src/angular-datatables.directive.js: 23: 28) ↵ в checkAndUpdateDirectiveInline (webpack-internal: ///./node_modules/@angular/core/esm5/core.js: 12627: 19) ↵ в checkAndUpdateNodeInline (webpack-internal: ///./node_modules/@angular/core/esm5/core.js: 14151: 20) ↵ в checkAndUpdateNode(webpack-internal: ///./node_modules/@angular/core/esm5/core.js: 14094: 16) ↵ at debugCheckAndUpdateNode (webpack-internal: ///./node_modules/@angular/core/esm5/core.js: 14987: 76) ↵ в debugCheckDirectivesFn (webpack-internal: ///./node_modules/@angular/core/esm5/core.js: 14928: 13) ↵ в Object.eval [как updateDirectives] (нг: ///AssessmentModule/AssessmentListComponent.ngfactory.js:549:5) " proto : Ошибка

1 Ответ

0 голосов
/ 11 июня 2018

Если вы хотите повторять свой код каждую 1 минуту, используйте оператор Observable interval - это гораздо удобнее и чище:

Observable
    .interval(60*1000) //one minute
    .flatMap(() => this.assessmentlistService.getAll())
    .subscribe(response => {
        if (response != null) {
            //.... your other code
        }
    });

.flatMap() позволяет вам повторно вызыватьgetAll() API после каждого разрешения (думаю, повторные подписки).

...