为什么这个Angular 4自定义验证器会返回Promise或Observable?什么是确切的逻辑?

时间:2017-09-10 09:59:50

标签: javascript angular typescript angular-promise angular-observable

我是 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用于对事件变化作出反应)

0 个答案:

没有答案