おそらく私はばかだと思っていますが、検証が失敗したときにonSubmitを停止するカスタムフォーム検証を取得する方法を理解できません。私は、新しいコントロールを作成するときに、コードと同様に、フォームコンポーネントのhtmlTemplateにカスタム検証キーワードを直接追加することによって、両方のHTML構文を使用してみました。私もこの機能を提案して何も見ていないカスタムバリデータのために働くべきではない。角2カスタムフォーム検証ではonSubmitが呼び出されないようにしていません
ここで私は、私は誰かが、これは正しく動作して取得する方法を私に示し、または認めていくつかのドキュメントの方に私を指すことができますいずれかを望んでいる
import { Component, Output, EventEmitter, OnInit } from 'angular2/core';
import { FORM_DIRECTIVES, FormBuilder, Control, ControlGroup} from 'angular2/common';
@Component({
selector: 'formality-form',
templateUrl: 'html/formality.html',
styleUrls: ['styles.css']
})
export class FormalForm implements OnInit {
formGroup: ControlGroup;
// Here I register the custom validator to the Control group
constructor(fb: FormBuilder) {
this.formGroup = fb.group({
'date': ['']
} {validator: FormalForm.customVal});
}
// This is my custom validator
public static customVal(control: ControlGroup){
return {isFail:true};
}
// I would like for this to never be called, since the custom validator is in
// a state of perpetual fail.
onSubmit(): void {
console.log(this.formGroup.value);
alert('onSubmit called; formGroup.valid = ' + this.formGroup.valid);
}
}
And here's a link to the plunkr
を使用しているコードの例ですこれは私が期待しているようには機能しません。
フォームの有効性を確認する必要があります実際には
組み込みのバリデータを使用している場合、送信ボタンが起動しないようです。最も明白な例は '必須'です。これをHTMLの要素に追加すると、入力フィールドが空である限り、 'onSubmit'は呼び出されません。私はカスタムバリデーターがそのように動作するようにしたい。私は '[disabled ="!formGroup.valid "'を私の送信ボタンに追加する必要がないようにしたいと思います。 – Whelch