自定义验证器示例

Angular 2 有两种自定义验证器。第一个示例中的同步验证器将直接在客户端上运行,而异步验证器(第二个示例)可用于调用远程服务为你进行验证。在此示例中,验证程序应调用服务器以查看值是否唯一。

export class CustomValidators {

static cannotContainSpace(control: Control) {
    if (control.value.indexOf(' ') >= 0)
        return { cannotContainSpace: true };

    return null;
}

static shouldBeUnique(control: Control) {
    return new Promise((resolve, reject) => {
        // Fake a remote validator.
        setTimeout(function () {
            if (control.value == "exisitingUser")
                resolve({ shouldBeUnique: true });
            else
                resolve(null);
        }, 1000);
    });
}}

如果你的控制值有效,则只需向调用者返回 null。否则,你可以返回描述错误的对象。