检查组件内部的字段是否有效



我正在学习Angular2,并试图检查组件中的文本字段是否有效。我构建了一个名为MyUpload的组件,并在模态组件中调用它。在我的模态中,我试图验证其中的字段(myField(是否有效。我试着做这样的事情:

<my-upload #upload [maxSize]="10000" [multiple]="true"></my-upload>
<textarea name="comment" ... ></textarea>
<button ... 
[disabled]="f.form.valid && upload.form.myField.valid" ...>Save</button>

但我得到了:

无法读取未定义的属性"myField">

我也尝试过上传.form.control.myField.valid,但不起作用。#upload似乎没有引用我的组件中的表单。

我该怎么做?

查看此处的答案以获得进一步的解释。模板中的Angular 2标签是什么意思?

简而言之,这意味着#reference是一个html引用,只包括引用的html属性,而不包括底层组件的html成员。

upload.form意味着在myuploadhtml元素的html中有一个表单属性。没有,所以它是空的。

要使用这样的组件,它应该实现一个自定义表单控件,并像处理输入一样进行处理。你可以绕过它,但表单必须在子组件中声明,并且应该根据问题中的注释进行一些null检查。

检查自定义控件的ControlValueAccessor。检查https://blog.thoughtram.io/angular/2016/07/27/custom-form-controls-in-angular-2.html找个好导游。

最新更新