为什么有角度的不允许我将值赋给对象?

时间:2019-07-13 16:18:11

标签: angular typescript

我做了一个查询组件来查询数据库中的一个人,它有一个按钮可以编辑那个特定的人,当单击它时,它会切换到另一个组件来编辑那个人,所以我添加了一个按钮来再次返回到查询组件,并在查询组件上显示了更新的数据,但是在返回时,查询组件没有出现。

我试图使用服务传递数据,这是代码的一部分:

export class PersonaGetComponent implements OnInit {

personas: Persona[];
individuo: {cedula: string, direccion: string; nombre: string; _id: string};
valor: any;

constructor(private ps: PersonasService, private vd: VolverDataService) { }

ngOnInit() {
  this.ps
  .getPersonas()
  .subscribe((data: Persona[]) => {
   this.personas = data;
});

if (this.vd.volver === true) {
  console.log(this.individuo);
  this.valor = this.vd.cedula;
  this.individuo.cedula = this.vd.cedula;  //this part shows an error, it says that individuo is undefined so I cannot assign a value
  this.individuo.direccion = this.vd.direccion;
  this.individuo.nombre = this.vd.nombre;
 }
}

这是错误:

无法设置未定义的属性“ cedula”

单个对象未定义,我无法为其分配任何值。

2 个答案:

答案 0 :(得分:2)

您仅定义了Type中的individuo,但从未为其分配值。这就是为什么控制台向您大喊变量为undefined的原因。改为这样做:

// Change:
individuo: {cedula: string, direccion: string, nombre: string, _id: string};
// With this:
individuo = {cedula: '', direccion: '', nombre: '', _id: ''};

答案 1 :(得分:1)

您必须为individuo提供一个初始值,因为它是undefined

解决方案:

individuo: {cedula: string; direccion: string; nombre: string; _id: string} = {
    cedula: '',
    direccion: '',
    nombre: '',
    _id: ''
};