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

Angular 检查组件内的字段是否有效,angular,Angular,我正在学习Angular2,并试图检查组件中的文本字段是否有效。我构建了一个名为MyUpload的组件,并在模式组件中调用它。在我的模式中,我试图验证其中的字段(myField)是否有效。我试着这样做: <my-upload #upload [maxSize]="10000" [multiple]="true"></my-upload> <textarea name="comment" ... ></textarea> <button ..

我正在学习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”

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


我该怎么做呢?

请看这里的答案,进一步解释

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

upload.form
表示您的html中的MyUpload html元素中有一个表单属性。没有,所以它是空的

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

检查自定义控件的ControlValueAccessor。检查
找个好向导

您看到的错误是由于button属性尝试访问“我的上载”组件时,“我的上载”组件不完全可用。“我的上传”组件中的表单是如何实现的?如果尝试
f.form.valid&&upload.form?.myField?.valid
,会怎么样?