Javascript 将表单输入绑定到单个对象-angular2

Javascript 将表单输入绑定到单个对象-angular2,javascript,angular2-template,angular2-forms,Javascript,Angular2 Template,Angular2 Forms,我正在尝试将所有表单元素绑定到单个对象obj中,如下所示: <input type="text" [(ngModel)]="obj.name"> <select [(ngModel)]="obj.x"> <option *ngFor="let x in xx" [ngValue]="x">{{x}}</option> </select> {{x} 我得到TypeError:无法读取未定义的属性“name”。请支持我出错的地

我正在尝试将所有表单元素绑定到单个对象obj中,如下所示:

<input type="text" [(ngModel)]="obj.name">
<select [(ngModel)]="obj.x">
    <option *ngFor="let x in xx" [ngValue]="x">{{x}}</option>
</select>

{{x}

我得到TypeError:无法读取未定义的属性“name”。请支持我出错的地方。

您没有在组件中声明对象,因此导致错误。对于普通绑定,您可以使用
obj?.name
,但对于将引发错误的模型绑定。因此,您可以简单地在component类中声明对象,如下所示:

export class MyComponent {

    public obj: any = {
      name: '',
      x: null
    }
}

错误就会消失。

如果没有组件本身的代码,要确定发生了什么有点困难。它可能是生命周期,在生命周期中,它试图在初始化obj之前访问name。如果可能的话,添加组件,也许在组件中用一个空对象删除obj声明。你能告诉我obj需要如何初始化吗?你在应用程序端有任何特定的对象模型吗?还可以共享组件代码以帮助您