无法从* ngIf访问由ngForm生成的FormControl

时间:2017-10-12 04:18:02

标签: angular

我的模板中有这个代码:

<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吗?

1 个答案:

答案 0 :(得分:2)

image for error

  

他们将表单控件的创建委托给指令。避免   “检查后更改”错误,这些指令不止一个   循环来构建整个控制树。这意味着你必须等待   在操纵任何控件之前勾选

这也意味着form.value.saveas值第一次为undefined。因此,要摆脱此错误,只需使用安全导航操作符:

*ngIf="form.value.saveas?.length > 0"