angular - 检查加载页面上的缺失元素
问题描述
使用 Angular 7,表格如下所示
<mat-form-field>
<textarea matInput
[(ngModel)]="dataObj.member.name"
name="memberId" disabled></textarea>
</mat-form-field>
dataObj
正在保存所有数据,如下所示
{
"somekey": "someValue"
"id": "5c7abba",
"member": {
"name": "test",
"id": "5c76de28"
}
}
有时,成员可能会从 dataObj 中丢失,在这种情况下,角度形式会抱怨加载。我试着用
* ngIf="dataObj.member
"
<mat-form-field>
<textarea matInput *ngIf="dataObj.member"
[(ngModel)]="dataObj.member.name"
name="memberId" disabled></textarea>
</mat-form-field>
但这不起作用。想要实现,如果会员缺失,表格显示空白归档
dataObj 从服务 api 返回。
ngOnInit() {
this.getObj();
}
getObj() {
const id = this.route.snapshot.params.id;
this.objService.getObj(id)
.subscribe(obj => this.obj = obj);
}
解决方案
您可以尝试在以下庄园进行处理。
解决方案
<div *ngIf="dataObj && dataObj.member">
<textarea matInput
<mat-form-field>
[(ngModel)]="dataObj.member.name" name="memberId" disabled>
</mat-form-field>
</textarea>
</div>
解释
这应该在访问它们之前检查这两个值是否存在,并且不会出现错误,如果它们不存在,<mat-form-field>
则不会插入,因此不会尝试访问会导致错误的未定义字段。
我建议在初始化视图之前运行的ngOnInitdataObj
生命周期钩子中完成填充的任何操作,这应该有助于视图中未定义的值。这样,检查只是一种预防措施。&&
编辑
public dataObj = {};
public ngOnInit(): void
{
const id = this.route.snapshot.params.id;
this.objService.getObj(id).subscribe(obj =>
{
this.dataObj = obj;
console.log(this.dataObj); // can check values here.
});
}
刚刚在您正在使用的控制器中注意到,this.obj
但在您正在使用的模板中dataObj
。此处的编辑对两者都使用相同的内容。确保做山姆。
推荐阅读
- javascript - Mongoose updateMany 用于数组数组
- c++ - 如何在类构造函数中初始化匿名结构?
- javascript - 有没有办法在电子中缓存网页以提供离线支持?
- java - 如何检查字符串中存在的任何单词列表?
- c++ - 使用 OPEN SSL 库使用 aes 256 加密文件
- java - 无法打开只读环境
- arrays - Kotlin Android 中的多维数组
- php - Laravel 7 试图获取非对象的属性“域”(查看:
- angular - Angular prod 模式 No component factory found 错误
- javascript - 如何在 Charts.js 中增加饼图上的箭头长度?