我的put请求有点问题。在我的nodejs如果请求是成功的,我发送消息json到这样的角度。
res.json({ success: true, message: 'Success'})
在angular中,我在添加或修改数据库中的对象后创建捕获此消息的请求。如果我添加对象,我可以从nodejs捕获此消息,我可以解析此消息,但如果我想修改一个对象,我无法解析json,我有此消息错误。
Classe.service.ts
updateClasse(room, id) {
const uri = 'http://localhost:4000/api/classes/update/' + id;
const obj = { room: room };
this.http.put(uri, obj).subscribe(
(res:any)=> {
this.okReq = res.message;
return this.okReq;
});
}
Classe.component.ts
updateClasse(room) {
this.route.params.subscribe(params => {
this.service.updateClasse(room, params['id']);
});
this.router.navigate(['/classes']);
}
Classe.html
{{ okReq }}
<form [formGroup]="angForm">
<div class="form-group">
<label class="col-md-4">Classe Name</label>
<input type="text" class="form-control" formControlName="room" #room [(ngModel)] = "classe.room"/>
</div>
<div class="form-group">
<button (click)="updateClasse(room.value)" class="btn btn-primary">Update</button>
</div>
</form>
答案 0 :(得分:1)
只需将您的回复 type
更改为 any
this.http.put(uri, obj).subscribe(
(res:any)=> {
console.log(res.message)
});
答案 1 :(得分:0)
您可以使用泛型类型从http操作设置返回值的类型。假设您已经有MessageResponse
类型:
interface MessageResponse {
success: boolean;
message: string;
}
现在您可以将其用作.put
的通用参数:
this.http.put<MessageResponse>(uri, obj)
现在假定res
属于MessageResponse
类型,您可以将res.message
作为字符串值进行访问。
顺便说一句,我不会在你的服务中使用.subscribe
。相反,我会在你需要实际调用http请求时使用它,例如在组件或依赖于响应的其他服务中。