我想将.html代码中的[(ngModel)]分配给一个空(空或未定义)的对象,但是它给出 _co.object为空的错误。 有2种情况,第一种情况是我的对象具有值,第二种情况是没有值。第一种情况ngModel可以正常工作,但是第二种情况下,它给出了为null的错误。我尝试过使用elvis(?)运算符,但无济于事。
问题已解决!!谢谢大家
我的.ts页面
个人资料:个人资料= {
fullName: '',
email: '',
address: '',
};
我的.html页面
<ion-item>
<ion-label>Full Name:</ion-label>
<ion-input [(ngModel)]="profile.fullName"></ion-input>
</ion-item>
错误类型错误:“ _ co.profile为空”
答案 0 :(得分:1)
您始终需要确保获取对象的属性。否则将来您可能会遇到意想不到的问题。
要么使用ngIf
<ion-item *ngIf="profile">
<ion-label>Full Name:</ion-label>
<ion-input [(ngModel)]="profile.fullName"></ion-input>
</ion-item>
或使其可选
<ion-item>
<ion-label>Full Name:</ion-label>
<ion-input [(ngModel)]="profile?.fullName"></ion-input>
</ion-item>
答案 1 :(得分:0)
谢谢你们。我发现我的错误是在另一个地方。我以某种方式将 ngOnInit 中的“配置文件”对象从空重新分配为未定义。像这样:
ngOnInit(){
//code...
if(!this.profile){
this.profile = {} as Profile; //here was the mistake which I accidentally made.
//and it was assigning my object to null
}
}
答案 2 :(得分:0)
声明配置文件时,应添加所有子项,这将阻止其未定义。
export class Foo {
public profile:any = {
fullName='',
foo = '',
bar = ''
}
答案 3 :(得分:0)
当绑定到可为空的对象的属性时,可以通过创建setter和getter并绑定到该属性别名来防止对象为null时出错。
例如,代替
[(ngModel)]="model[`${this.field.key}_selectedObject`]"
更改为
[(ngModel)]="fieldModel"
然后在您的ts代码中添加
public get fieldModel(): any {
if (!this.model) return null;
return this.model[`${this.field.key}_selectedObject`];
}
public set fieldModel(value: any) {
if (!this.model) return;
this.model[`${this.field.key}_selectedObject`] = value;
}
答案 4 :(得分:0)
对于任何在 angular 10+ 上遇到此错误的人。 在您的 tsconfig 文件中执行此操作
"strict": true,
"strictNullChecks": false
然后这是一个如何在属性绑定中使用它的示例
<div>
<label>Street Address</label>
<input type="text" class="form-control" name="street"
[(ngModel)]="user.address.street">
</div>
假设你的模型是这样的
User {
address?: {
street?: string,
city?: string,
province?: string
}
}