我稱之爲「等級」的嵌套形式組:FormControl`s是NG-有效雖然FromGroup設爲ng-無效
儘管嵌套形式組的成績'應用了NG-無效類的兒童表格控件確實應用了ng有效的類。
爲什麼無效不是從嵌套窗體繼承到其控件?
this.schoolyearForm = this.formBuilder.group({
name: [this.createSchoolyear.name, [Validators.minLength(3), Validators.required]],
endDate: [this.createSchoolyear.endDate, Validators.required],
startDate: [this.createSchoolyear.startDate, Validators.required],
grades: this.formBuilder.group({
bestGrade: [this.createSchoolyear.bestGrade, Validators.required],
worstGrade: [this.createSchoolyear.worstGrade, Validators.required]
}, { validator: this.gradesCompare })
});
gradesCompare(c: AbstractControl): { [key: string]: boolean } | null
{
let bestGradeControl = c.get("bestGrade");
let worstGradeControl = c.get("worstGrade");
if (bestGradeControl.pristine || worstGradeControl.pristine)
return null;
if (bestGradeControl.value === worstGradeControl.value)
{
return { "match": true };
}
return null;
}
看到紅色和綠色邊框:
在FormControl`s不應用CSS NG-無效類:
.ng-valid:not(form) {
border-left: 5px solid #42A948; /* green */
}
.ng-invalid:not(form) {
border-left: 5px solid #a94442; /* red */
}
因此它們被鑲上綠色,但我希望他們是紅色的!
UPDATE
我改變了用戶奔plunkr這一個:
https://plnkr.co/edit/VobcC0Qw1EBDytYdkzru?p=preview
它的工作原理,因爲我希望它會工作,但它似乎是一種解決方法給我。多ng級的表達難以理解...
請Ben抓住這個PLUNK作爲您的解決方案,但只有當您真誠地認爲您會對解決方案感到滿意。如果不嘗試找到更好的解決方案,現在你完全知道我的要求。
其他人也歡迎加入這個挑戰,現在你知道驗證/ UI /錯誤消息應該如何表現。
這個確切的問題已被問,但沒有解決方案:http://stackoverflow.com/question s/38938050/angular-2-group-validation?rq = 1 – Pascal
Hey Pascal!我沒有在2月25日看到你的更新。我實際上很想從頭開始編寫一個UI類型的組件,它可以像其他任何形式的輸入控件一樣使用集成驗證。這對你更好嗎?你怎麼看? –
嘿,本,呃...不知道我是否理解你。你想創建一個有2個數字下拉的組件,它們不允許相等嗎?像2.4.6中新的equals方法就是否定的!equals? – Pascal