表单上的错误ANGULAR 2 - 无法读取undefined的属性

时间:2017-06-20 12:07:32

标签: angular typescript

启动组件时出现此错误:

ORIGINAL EXCEPTION: Cannot read property 'cliente' of undefined

HTML:

<select class="form-control input-lg" formControlName="cliente" name="cliente" [(ngModel)]="usuario.cliente">
  <option [ngValue]="">Selecione</option>
  <option *ngFor="let cliente of clientes" [ngValue]="cliente" [selected]="usuario.cliente.codigo==cliente.codigo ? true : null">{{cliente.nome}}</option>              
</select>

当我尝试打开新数据的组件时会发生这种情况,如果加载带有要编辑的数据的组件,确实会给我任何错误

TS文件中的变量:

@Input() usuario: Usuario = new Usuario();

2 个答案:

答案 0 :(得分:0)

发生错误是因为usario未作为输入传入html指令

[(ngModel)]="usuario.cliente"

[selected]="usuario.cliente.codigo==cliente.codigo ? true : null"

正在尝试使用usuario的cliente属性(在这种情况下是未定义的)。

答案 1 :(得分:0)

您应该只使用Form或ReactiveForm不要同时使用它们。

<select class="form-control input-lg" name="cliente" [(ngModel)]="usuario.cliente"> <option [ngValue]="">Selecione</option> <option *ngFor="let cliente of clientes" [ngValue]="cliente" [selected]="usuario.cliente.codigo==cliente.codigo ? true : null">{{cliente.nome}}</option>
</select>

@Input只在接收值时使用

@Input() usuario: Usuario = new Usuario(); is wrong


你可以像这样使用:

@Input() _inpusuario
usuario: Usuario;
constructor(){
   this.usuario = new Usuario();
   if(this._inpusuario != null){
      this.usuario = this._inpusuario
   }
}