如何判断FormArray中指定FormGroup的有效性?
解决FormArray中通过索引判断FormGroup有效性的问题
方案1:直接在模板中将数字索引转为字符串
不需要自定义管道,在模板里可以通过字符串拼接或者toString()方法把数字索引转成字符串,传给get()方法:
<div>Form Group Valid?: {{roundInputs.get('' + roundCount)?.valid}}</div> <!-- 或者 --> <div>Form Group Valid?: {{roundInputs.get(roundCount.toString())?.valid}}</div>
方案2:使用FormArray的at()方法(更推荐)
FormArray本身提供了at(index: number)方法,直接接受数字索引获取对应的FormControl/FormGroup,这是Angular表单API的标准用法,比转字符串更直观:
<div>Form Group Valid?: {{roundInputs.at(roundCount)?.valid}}</div>
原写法失效的原因
你猜测的结论是正确的:roundCount是ngFor循环中的数字类型索引,而FormControl.get()方法需要传入字符串类型的路径。当你用{{roundCount}}插值时,传入的是数字,和方法要求的参数类型不匹配,导致无法正确获取控件;而直接写'0'这种字符串索引则符合参数要求,所以能正常工作。
内容的提问来源于stack exchange,提问作者Eric Petela
相关产品推荐
相关产品推荐

