我是 Angular 4 的新手,我不是很喜欢 JavaScript \ TypeScript ,我对教程中的这个示例有以下疑问。
它与自定义表单验证程序的实现有关,但我的疑问更多是关于可观察和承诺对象。
所以我有这样的事情:
import {Form, FormControl} from '@angular/forms';
import {Observable} from 'rxjs/Observable';
export class CustomValidators {
static asyncInvalidProjectName(control: FormControl): Promise<any> | Observable<any> {
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
if (control.value === 'Testproject') {
resolve({'invalidProjectName': true});
} else {
resolve(null);
}
}, 2000);
})
return promise;
}
}
asyncInvalidProjectName()方法实现了我的自定义验证器的逻辑。
我的怀疑是:
1)在我看来,此方法可以返回 Promise 对象或 Observable 对象。
为什么呢?在我看来,它总是返回一个 Promise 对象,表示表单中的输入是否有效。为什么在签名中似乎还可以返回 Observable ?
2)究竟代表一个 Promise 对象,与 Observable 有什么区别? (据我所知,Observable用于对事件变化作出反应)