Angular 2 - 异常 : _this. 订阅不是函数 - 自定义验证

标签 angular angular2-forms

我正在尝试实现自定义验证规则来验证复选框是否被选中。

但是我遇到了一个错误

error_handler.js:46 EXCEPTION: _this.subscribe is not a function

当我尝试添加自定义验证器时

validator.ts

 import {Control} from "angular/common";

 interface ValidationResult {
     [key: string]: any;
 }

 export class CustomValidators {

     static validateChecked(c: Control): ValidationResult {
         return (c.value);
     }
 }

Component.ts

import {Component} from '@angular/core';

import {FormBuilder, FormGroup, Validators, FormControl} from '@angular/forms';
import {CustomValidators} from './validators.ts'

@Component({
    selector: 'wizard',
    templateUrl: './template.html',
})

/**
 * @todo - check how first select is automatically active
 * @todo - export form presets to form class
 */
export class Wizard {
    myForm: FormGroup;

    privacy: boolean;


    // Prefilling the FormBuilder
    constructor(private horizonService: HorizonService, fb: FormBuilder) {
        this.myForm = fb.group({
            'privacy': ['', Validators.required, CustomValidators.validateChecked],
        });
    }

    onSubmit(values: string): void {
        console.log('you submitted value: ', values);
    }
}

最佳答案

如果您需要多个验证器,您应该使用 Validators.compose。所以你的代码应该是这样的:

constructor(private horizonService: HorizonService, fb: FormBuilder) {
    this.myForm = fb.group({
      'privacy': ['', Validators.compose([Validators.required, CustomValidators.validateChecked])],
    });
  }

您可以阅读一篇关于验证器的精彩文章 here .

关于Angular 2 - 异常 : _this. 订阅不是函数 - 自定义验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39701725/

相关文章:

angular - 为什么使用 ngSubmit 而不是 onSubmit

angular - 类型 'ElementRef' 不是通用的

templates - 如何在基于模型和模板的 Controller 中使用相同的验证器

angular - 使用变量将 mat-menu 元素指定为 [matMenuTriggerFor]?

angular - Storybook Angular 和 ng-bootstrap

javascript - 将 javascript/Type script 的 2 个功能合二为一

Angular 2 输入指令修改表单控件值

angular - 关于 angular4 项目中的 import {**} from @app/*

javascript - 禁用 mat-slider 上的交互并保持 css 样式

angular - TypeScript -'s Angular Framework Error - "没有将 exportAs 设置为 ngForm 的指令”