我有一个api调用,返回一个json消息。消息中的变量之一是对象数组,有时该数组为空,但是需要该数组中的数据,以便可以将其二维方式绑定到HTML代码中的角度材质元素。我需要解决该对象数组为空时的情况,因为数组未定义,所以DOM元素不会出错。它应该只将那些角形材料元素留为空白。 (我想在元素上不使用nfIf来执行此操作,因为它们仍应显示。)
当前设置名称变量的代码的方式不是绑定到变量的2向数据,因为它不会被更新。
我已经尝试过使用Elvis运算符,但是那些不适用于[(ngModel)]。我可以用[ngModel] =“ array?.value”进行绑定,但不能更新。添加(ngModelChange)=“ datasource?.value?= $ event”,因为'?'不起作用是一个意外的令牌。 在JSON映射方面我能做些什么?
GetData(identificationNum: string): Observable<DATA_OBJECT>{
return this.http.get<DATA_OBJECT>(this.service.apiAddress + 'api/GetData/' + identificationNum)
.pipe(
map(
jsonObj => Object.assign(new DATA_OBJECT(), jsonObj)
)
);
}
datastructuresmodels.ts
export class DATA_OBJECT
{
public header: Object ;
public identificationNum: string ;
public infoArray: Array<Info> ;
}
export class Info
{
public name: string;
public address: string ;
public gender: string ;
}
data: DATA_OBJECT;
dataSource: Info[];
ngOnInit() {
this.service.GetStowData(this.number).subscribe(
(data: DATA_OBJECT) => (this.data = data),
error => console.log(error),
() => {
this.dataSource = this.data.infoArray;
}
);
}
<div class="col">
<p class="subheading">Name: </p>
<mat-form-field>
<input matInput placeholder="Name"
[ngModel]="datasource?.name">
</mat-form-field>
</div>
{ "header": { "messageCode": 00, "status": 0,}, "identificationNum": 123, "infoArray": [] }
{ "header": { "messageCode": 00, "status": 0,}, "identificationNum": 123, "infoArray": [{"name":"string"}, {"address":"string"}, {"gender":"string"}] }
即使api用空数组响应,预期结果也是空角材料元素。