我正在学习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找个好导游。