启动组件时出现此错误:
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();
答案 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
}
}