我有一个组件,它在加载启动期间加载服务。该服务将返回数据(并通过后端进行验证),但在角度上它将返回未定义。
someComponent.ts
ngOnInit() {
this.someService.init().subscribe(data => { this.data = data });
}
SomeService.ts
init() {
return this.httpclient.post<User>('/loadData', {}).map(data => this.data);
} // yes, request param is empty {}
所以问题是 1.如何查找数据设置是否正确? 2.为什么未定义的字段被退回?
我已经通过邮递员测试了后端,当调用/ loadData时,它实际上返回了一些数据。
答案 0 :(得分:1)
在SomeService.ts中:.map(data => this.data);
←可以省略,但这是罪魁祸首。这有效地将返回的结果data
交换为实例上设置的字段data
的值。如果您确实想返回传入的内容,则应删除关键字this
,使其变为.map(data => data);
init() : Observable<User> {
return this.httpclient.post<User>('/loadData', {});
}
或者如果您想更改响应
init() : Observable<User> {
return this.httpclient.post<User>('/loadData', {}).pipe(map(data => {
// alter data here
return data; // not this.data
}));
}
最后,您应该在方法上指定返回类型,以便代码可以从类型安全中受益。我已将Observable<User>
作为返回类型添加到init
方法声明中。
答案 1 :(得分:0)
您需要对服务进行一些修改,
init() {
return this.httpclient.post<User>('/loadData', {});
}