我的模板中有这个代码:
<form #form="ngForm" (ngSubmit)="save(form)">
<input ngModel type="text" name="saveas">
<button *ngIf="form.value.saveas.length > 0" type="submit">Save</button>
</form>
当页面加载时,我收到以下错误:
TypeError:无法读取属性&#39;长度&#39;未定义的。
但它只发生一次,之后* ngIf按预期工作,切换提交按钮。是什么原因造成的?我只是想在Angular生成之前过早地访问FormControl吗?
答案 0 :(得分:2)
他们将表单控件的创建委托给指令。避免 “检查后更改”错误,这些指令不止一个 循环来构建整个控制树。这意味着你必须等待 在操纵任何控件之前勾选
这也意味着form.value.saveas
值第一次为undefined
。因此,要摆脱此错误,只需使用安全导航操作符:
*ngIf="form.value.saveas?.length > 0"