关于角度:如何设置双向绑定到有效参考但空/新对象

How To Setup a Two Way Binding To a Valid Reference but Empty/ New Object

如何正确设置绑定到所有属性都有效但为空的类对象?

工作……如果组件声明为这样:

1
2
3
4
5
6
7
8
9
export class BioComponent implements OnInit {

 bio : Bio  = { id : 1, FirstName :"", LastName :""};

  constructor() { }

  ngOnInit() {
  }
}

在用户编辑时的视图中,以下绑定起作用,下面的第三行显示了用户键入的内容。

1
2
3
<td><input [(ngModel)]="bio.FirstName" placeholder="Your first name"></td>
<td><input [(ngModel)]="bio.LastName" placeholder="Your last name"></td>
<td>{{bio.FirstName + ' ' + bio.LastName}}</td>

失败

如果设置了bio : Bio = new Bio();,则第三项显示undefined undefined,直到用户在每个输入中键入内容为止。

综上所述,我不想对每一个财产都有像FirstName :"",这样的财产申报。如何在角度/字体脚本中新建一个新对象?


可以在构造函数中定义和初始化数据成员,使用默认值:

1
2
3
4
5
6
7
8
export class Bio {

  constructor(
    public id: number = 0,
    public firstName: string = '',
    public lastName: string = '') {
  }
}

可以按如下方式创建Bio对象:

1
2
3
4
bio1 = new Bio();
bio2 = new Bio(1);
bio3 = new Bio(2, 'Robert');
bio4 = new Bio(3, 'Jane', 'Smith');

您可以在这个stackblitz中看到正在工作的代码。


您可以在Bio类中设置默认值。

1
2
3
4
5
6
7
8
9
10
11
export class Bio {
  id: number;
  firstName: string;
  lastName: string;

  constructor(id: number = 0, first: string = '', last: string = '') {
      this.id = id;
      this.firstName = first;
      this.lastName = last;
  }
}

然后在组件中

bio: Bio = new Bio();将初始化为默认值。