Angular 角度2[(ngModel)]放置在<;表格></表格>;

Angular 角度2[(ngModel)]放置在<;表格></表格>;,angular,angular-ngmodel,angular2-forms,angular2-ngmodel,Angular,Angular Ngmodel,Angular2 Forms,Angular2 Ngmodel,我有一个component.html,表单的代码如下: //更多divs //更多divs的结束 但是,当组件呈现html时,我不断收到一个错误: Uncaught(承诺中):TypeError:undefined不是对象 只有在表单之间放置输入标记时才会发生这种情况。它应该在哪里。如果我将输入标记放在表单标记的上方和之前,它将与数据一起呈现。为什么会发生这种情况?这与放置无关,我假设您尚未定义对象客户端,因为您绑定到客户端。name; 必须初始化为默认值,如 client = {};

我有一个component.html,表单的代码如下:


//更多divs
//更多divs的结束
但是,当组件呈现html时,我不断收到一个错误:

Uncaught(承诺中):TypeError:undefined不是对象

只有在表单之间放置输入标记时才会发生这种情况。它应该在哪里。如果我将输入标记放在表单标记的上方和之前,它将与数据一起呈现。为什么会发生这种情况?

这与放置无关,我假设您尚未定义对象
客户端
,因为您绑定到
客户端。name
; 必须初始化为默认值,如

client = {}; 
在组件或真实客户端对象中


另外,我想建议你停止使用NGModel go with。开始使用后,您会喜欢它们:)快速、简单、灵活

您在输入控件上缺少了
名称
属性。应该是

<input class="form-control" name="clientName" #name="ngModel" [(ngModel)]="client.name" required>

如果删除name属性并打开控制台,您将看到如下错误消息:

如果在表单标记中使用ngModel,则必须使用name属性之一 定格 控件必须在ngModelOptions中定义为“独立”


这里有一个

另外,您的结束标记在哪里?对象已定义,*ngIf也起作用,不确定ngModel为什么不在这里。我更新了上面的代码,以说明标记的位置。如果将[(ngModel)]=“client.name”更新为[(ngModel)]=“test”,我会收到相同的结果