使用变量名进行错误检查的语法

时间:2018-09-05 17:10:09

标签: angular input error-handling

我正在ngFor内部通过强制检查来构建动态输入字段。我使用field{{idxVar}}构建了名称,其中idxVar是索引,但是如何使用它来检查错误

<span [ngClass]="{'active' : field{{idxVar}}.errors}">*Mandatory</span>
<input type="text" [required]="itmVar.is_required ? 'required' : null" name="field{{idxVar}}" [(ngModel)]="user.customFields[idxVar]"
            #field{{idxVar}}="ngModel">

在上面,我知道这不是错误的正确方法,但想知道正确的语法

'active' : field{{idxVar}}.errors

2 个答案:

答案 0 :(得分:1)

对于* ngFor中的NgModel,您可以使用唯一的模板引用变量。每个输入字段都与相应的模板引用相关联,不需要数组索引。

// you definitely have to set at least the font to calculate the result
// maybe for your case you will also have to set other attributes
let attributedText = NSAttributedString(string: label.text, 
                                        attributes: [.font: label.font])
let lastLineMaxX = lastLineMaxX(message: attributedText, 
                                labelWidth: label.bounds.width)

这是堆栈闪电代码https://stackblitz.com/edit/angular-a4skhz

答案 1 :(得分:0)

尚不清楚您要做什么,但是似乎最适合您的方法是创建一个带有数字键的对象fields,该键对应于您要检查的索引。

在您的控制器中,有一个fields对象。

然后您的模板代码将变为

<span [ngClass]="{'active' : field[idxVar].errors}">*Mandatory</span>
<input type="text" [required]="itmVar.is_required ? 'required' : null" name="field[idxVar]" [(ngModel)]="user.customFields[idxVar]">

这是Stackblitz中的一个简单示例 https://stackblitz.com/edit/angular-p4zemy

如果此答案满足您的需求,请确保将其标记为已接受。