register(email: string, password: string, firstName: string, lastName: string,location: string): Observable<UserRegistration> {
let body = JSON.stringify({ email, password, firstName, lastName,location });
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post(this.baseUrl + "/accounts", body, options)
.map(res => true)
.catch(this.handleError);
}
我在网上找到了此代码,我正在尝试在自己的项目中实现它,但我不断收到以下错误消息:
Type 'Observable<boolean>' is not assignable to type 'Observable<UserRegistration>'.
Type 'boolean' is not assignable to type 'UserRegistration'.
它也使用此类:
export interface UserRegistration {
email: string;
password: string;
firstName: string;
lastName: string;
location: string;
}
答案 0 :(得分:2)
错误非常明显。您告诉Typescript,您希望在映射并在以下代码行中将结果返回到UserRegistration
时,该方法返回Boolean
的观测值:
.map(res => true)
根据您的代码-如果http请求不会引发错误,则将结果映射到“ true”并返回。
只需将第一行中的值从Observable<UserRegistration>
更改为Observable<boolean>
答案 1 :(得分:1)
如您的方法所示,您将返回一个布尔值true,而您的定义说它应该返回 Observable<UserRegistration>
。将方法的返回类型更改为
register(email: string, password: string, firstName: string, lastName: string,location: string): Observable<boolean>
但是您的逻辑似乎不正确,因为它总是会返回true。
答案 2 :(得分:1)
欢迎来到stackoverflow!
您的map语句返回true:
return this.http.post(this.baseUrl + "/accounts", body, options)
.map(res => true)
.catch(this.handleError);
我认为您真的想返回可观察的东西。如果是这样,则无需映射它。
您使用的是哪个版本的Angular和RxJS?
如果您正在使用Angular(v7)的当前版本,则它应如下所示:
return this.http.post(this.baseUrl + "/accounts", body, options).pipe(
catchError(this.handleError)
);
答案 3 :(得分:1)
如果返回的是UserRegistration对象,请使用以下代码。 我改变不大
register(email: string, password: string, firstName: string, lastName: string,location: string): Observable<UserRegistration> {
let body = JSON.stringify({ email, password, firstName, lastName,location });
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post(this.baseUrl + "/accounts", body, options)
.catch(this.handleError);
}
答案 4 :(得分:0)
您的返回类型为Observable<UserRegistration>
,但您返回的是boolean
您应该将返回类型更改为Observable<boolean>
或返回类型为Observable<UserRegisteration>
的对象
欢迎使用Stackoverflow:)