【发布时间】:2020-05-25 18:52:14
【问题描述】:
对于关于 RxJS 的新手/转储问题,我刚开始学习 Angular 表示歉意。
所以我创建了一个异步验证器静态方法,它调用一个 API 服务方法来检查数据库中用户名的唯一性。下面的代码 sn-ps 在后端服务器启动并运行时工作。如果不是,它会打印一条错误日志消息,我应该在演示组件中处理它。
在处理此类泛型用例以将Observable<SuccessResponse> 和Observable<ErrorResponse> 转换为Observable<ValidationErrors | null> 的转换步骤中缺少什么。
验证器
static usernameUnique(service: ApiService): AsyncValidatorFn {
return (control: FormControl): Observable<ValidationErrors | null> => {
return service.isUsernameTaken(control.value as string)
.pipe(
map((response: SuccessResponse) => response.data ? { taken: true } : null)
);
};
}
ApiService
isUsernameTaken(username: string): Observable<SuccessResponse | ErrorResponse> {
return this.httpCient.get('/backend/account/checkUnique', { params: { username: username } })
.pipe(catchError(this.handleError));
}
handleError(error: HttpErrorResponse) : Observable<ErrorResponse> {
// return specific payload of ErrorResponse based on error.status
}
提前致谢。
【问题讨论】:
标签: angular rxjs rxjs-pipeable-operators rxjs-observables