我正在写一个有角度的2验证函数。我想返回普通对象而不是可观察。
这是我目前的实施:
import {AbstractControl} from "@angular/common";
import {UserAccountService} from "../../useraccount/useraccount.service";
export function validateEmailAvailable(userAccountService: UserAccountService) {
return (control: AbstractControl)=> { //This returned lambda should itself return a plain object
return userAccountService.checkAvailability(control.value)
.map(res=> {
if (res.json() === true) {
return null;
}
else {
return {unavailable: true};
}
});
};
}
有人可以解释如何正确使用RxJs运算符,以便从上面返回null
或{unavailable: true}
但不是可观察的吗?
答案 0 :(得分:3)
我敢打赌,这是不可能的。这与要求异步函数同步返回其值相同。或者返回当前从未来的值计算的值。这本质上是矛盾的。如果你想一想,承诺'运营商'也总是会回报承诺。
答案 1 :(得分:0)
您可以使用toPromise()返回承诺而不是Observable
。
例如:
export function validateEmailAvailable(userAccountService: UserAccountService) {
return (control: AbstractControl)=> { //This returned lambda should itself return a plain object
return userAccountService.checkAvailability(control.value)
.toPromise()
.then(res=> {
if (res.json() === true) {
return null;
}
else {
return {unavailable: true};
}
});
};
}
答案 2 :(得分:0)
而不是返回lambda,为什么不直接返回包含值的observable?