フォームのcategories
フィールドに値があるかどうかを確認するこのカスタムバリデータがあり、そうである場合はmealTypes
フィールドがnullの場合はmealTypes
を無効に設定します。それはちょうど私のコンポーネントの外に配置されていますカスタムバリデーター - パラメータを渡す
function validateMealType(findForm: AbstractControl): { [key: string]: boolean]} {
if (findForm.get("mealCategoryChosen").value) {
if (!findForm.get("mealTypes").value) {
return { "invalidMealTypes": true };
}
}
return null;
}
そして私は私のコンポーネントのフォームを検証するために、私のコンポーネントでそれを使用します。
ngOnInit() {
this.findForm = this.formBuilder.group({
categories: null,
mealTypes: [null, Validators.required],
mealCategoryChosen: null,
distanceNumber: null,
distanceUnit: 'kilometers',
keywords: null,
}, validateMealType);
}
そして、それは動作します。 Here is the plunker。私の最後の質問の回答者に感謝します。
もう1つの受け入れ基準があります。
私は、コンポーネント上でこのブール型プロパティがあります:categories
が値を持っており、mealtypes
がnullの場合、私は無効とmealTypes
を設定現時点で
private mealSelected: boolean = false;
を。
categories
に値があり、mealTypes
がヌルでmealSelected
=== trueの場合、mealTypesを無効にする必要があります。 validateMealType関数にブール値パラメータを追加し、コンポーネントプロパティに渡すことは可能ですか?mealSelected
??どうすればいい?誰かがそれを更新するためにmy plunkerを更新できますか?ここでは、カスタムバリデーターにパラメータを追加して、コードを完全に理解して正しく適用する方法を示しています。
おかげ
例だろう方法です。私のアプリでは動作しません。モデル駆動型フォームを使用しているため、私は '[formControl] =" findForm.controls ['categories'] ''を私のアプリケーションに持っていません。私のフォームコントロールはカスタムコンポーネントに埋め込まれているので、 '[formControl] =" findForm.controls ['categories'] "'それらのコンポーネントはできません。あなたのプランナーが '[formControl] =" findForm.controls ['categories'] ''なしで動くことは可能でしょうか? – BeniaminoBaggins
@Beniamino_Bagginsあなたは 'FormBuilder'を使用していません、そうですか? – Michael
カテゴリも必要です。カテゴリに必要なバリデーターを追加しているように見えるのは、奇妙なことです。 – BeniaminoBaggins