[英]“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;
}
);
This is my api calling method. 这是我的api调用方法。 I tried the unsubscribe method.
我尝试了退订方法。 It is not working.the Below Code i used to refresh the data table for every 1 minute.
它不起作用。下面的代码我每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 Getting this error when im trying to reload the datatable. 我试图重新加载数据表时收到此错误。
ObjectUnsubscribedError {name: "ObjectUnsubscribedError", stack: "ObjectUnsubscribedError: object unsubscribed↵ a…odule/AssessmentListComponent.ngfactory.js:549:5)", message: "object unsubscribed", ngDebugContext: DebugContext_, ngErrorLogger: ƒ} message : "object unsubscribed" name : "ObjectUnsubscribedError" ngDebugContext : DebugContext_ {view: {…}, nodeIndex: 74, nodeDef: {…}, elDef: {…}, elView: {…}} ngErrorLogger : ƒ () stack : "ObjectUnsubscribedError: object unsubscribed↵ at new ObjectUnsubscribedError (webpack-internal:///./node_modules/rxjs/_esm5/util/ObjectUnsubscribedError.js:22:26)↵ at Subject._trySubscribe (webpack-internal:///./node_modules/rxjs/_esm5/Subject.js:105:19)↵ at Subject.Observable.subscribe (webpack-internal:///./node_modules/rxjs/_esm5/Observable.js:166:93)↵ at DataTableDirective.ngOnInit (webpack-internal:///./node_modules/angular-datatables/src/angular-datatables.directive.js:23:28)↵ at checkAndUpdateDirectiveInline (webpack-interna
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)↵ at checkAndUpdateNodeInline (webpack-internal:///./node_modules/@angular/core/esm5/core.js:14151:20)↵ at 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)↵ at debugCheckDirectivesFn (webpack-internal:///./node_modules/@angular/core/esm5/core.js:14928:13)↵ at Object.eval [as updateDirectives] (ng:///AssessmentModule/AssessmentListComponent.ngfactory.js:549:5)" proto : Error
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)“ 原型 :错误
If you want to repeat your code every 1 minute, use the Observable
's interval
operator is much more convenient and cleaner: 如果您想每1分钟重复一次代码,请使用
Observable
的interval
操作符更加方便和简洁:
Observable
.interval(60*1000) //one minute
.flatMap(() => this.assessmentlistService.getAll())
.subscribe(response => {
if (response != null) {
//.... your other code
}
});
The .flatMap()
allows you to repeatedly call the getAll()
API after every resolve (think repeated subscribes). .flatMap()
允许您在每次解析后重复调用getAll()
API(请考虑重复订阅)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.