繁体   English   中英

“ ObjectUnsubscribedError”-使用get调用重新加载角度数据表时

[英]“ObjectUnsubscribedError”- while reloading the angular data table using get call

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);
}

我试图重新加载数据表时收到此错误。

ObjectUnsubscribedError {名称:“ ObjectUnsubscribedError”,堆栈:“ ObjectUnsubscribedError:对象已取消订阅…odule / AssessmentListComponent.ngfactory.js:549:5)”,消息:“对象未订阅”,ngDebugContext:DebugContext_,ngErrorLogger:ƒ}消息:“取消订阅对象”名称:“ ObjectUnsubscribedError” ngDebugContext:DebugContext_ {view:{…},nodeIndex:74,nodeDef:{…},elDef:{…},elView:{…}} ngErrorLogger:ƒ()堆栈:“ ObjectUnsubscribedError:取消订阅对象↵在新的ObjectUnsubscribedError(webpack-internal:///./node_modules/rxjs/_esm5/util/ObjectUnsubscribedError.js:22:26)在Subject._trySubscribe(webpack-internal:///./node_modules/rxjs) /_esm5/Subject.js:105:19)↵在Subject.Observable.subscribe(webpack-internal:///./node_modules/rxjs/_esm5/Observable.js:166:93)↵在DataTableDirective.ngOnInit(webpack-内部:///./node_modules/angular-datatables/src/angular-datatables.directive.js:23:28)↵在checkAndUpdateDirectiveInline(webpack-interna l:///./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)↵在debugCheckAndUpdateNode(webpack-internal:///./node_modules/@在debugCheckDirectivesFn上找到angular / core / esm5 / core.js:14987:76)↵(webpack-internal:///./node_modules/@angular/core/esm5/core.js:14928:13)↵在Object.eval [ as updateDirectives](ng:///AssessmentModule/AssessmentListComponent.ngfactory.js:549:5)“ 原型 :错误

如果您想每1分钟重复一次代码,请使用Observableinterval操作符更加方便和简洁:

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

.flatMap()允许您在每次解析后重复调用getAll() API(请考虑重复订阅)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM