我是Angular 4的新手,我对JavaScript\TypeScript不太感兴趣,我对在教程中找到的这个示例有以下疑问。
它与自定义表单验证器的实现有关,但我的怀疑更多是关于Observable和Promise对象。
所以我有这样的事情:
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 用于对事件变化做出反应)