我尝试使用简单的应用程序,在单击删除按钮后删除用户。
当我尝试像这样运行服务器时,我在then
的{{1}}收到错误
成分:
deleteUser()
服务:
deleteUser(user: User, event: any) {
event.stopPropagation();
this.userService
.deleteUser(user)
.then(res => {
this.httpUsers = this.httpUsers.filter(h => h !== user);
if (this.selectedUser === user) { this.selectedUser = null; }
})
.catch(error => this.error = error);
}
错误讯息:
app / users.component.ts(46,8):错误TS2339:属性'然后'没有 存在于'void'类型。
错误的第46行是 deleteUser(user: User) {
console.log('Deleting user');
}
谷歌搜索时我发现this question所以我从deleteUser函数中删除了void,但没有任何改变。
任何提示我做错了什么?
答案 0 :(得分:5)
你必须调用delete方法,这样它才会返回承诺,你可以使用你必须这样做的deleteUser(user: User) {
return this.http.delete(url+id,...).toPromise();
}
<div id="AftermarketTreeView"></div>
$("#AftermarketTreeView").kendoTreeView({
dataTextField: ["text"],
select: onSelectAftermarketTreeNodes,
loadOnDemand: false
});
答案 1 :(得分:5)
如果您要退回承诺,则可以使用。如果要调用REST API然后映射结果
,则可以使用subscribe服务方法
getAudits() {
// console.log('audits' + amplify.store('audits'));
let audits: Audit[] = amplify.store('audits'));
return Promise.resolve(audits);
}
组件
this.auditService.getAudits().then(audits => {
this.audits = audits;
this.updateChart(true);
});
服务方法
getAudits() {
return this.http.get('/rest/batch').map(res => res.json());
}
组件
this.auditService.getAudits().subscribe(audits => {
this.audits = audits;
this.updateChart(true);
});
答案 2 :(得分:2)
您服务中的deleteUser
方法不会返回Promise
,因此您无法在其上调用.then(res => ...)
,例如错误状态。
deleteUser(user: User) {
console.log('Deleting user'); // <-- no return call - defaults to void
}