Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用空/空/未定义的对象分配[(ngModel)]?角度4_Javascript_Angular_Firebase_Ionic3 - Fatal编程技术网

Javascript 如何使用空/空/未定义的对象分配[(ngModel)]?角度4

Javascript 如何使用空/空/未定义的对象分配[(ngModel)]?角度4,javascript,angular,firebase,ionic3,Javascript,Angular,Firebase,Ionic3,我想将.html代码中的[(ngModel)]分配给一个空的对象(null或未定义),但它给出了\u co.object为null的错误。 有两种情况,第一种是我的对象有价值,第二种是它没有价值。第一种情况下,ngModel可以正常工作,但当涉及到第二种情况时,它给出了为null的错误。我试过用猫王(?)操作符,但没用 问题已解决!!谢谢大家 My.ts页面 profile: Profile = { fullName: '', email: '',

我想将.html代码中的[(ngModel)]分配给一个空的对象(null或未定义),但它给出了\u co.object为null的错误。 有两种情况,第一种是我的对象有价值,第二种是它没有价值。第一种情况下,ngModel可以正常工作,但当涉及到第二种情况时,它给出了为null的错误。我试过用猫王(?)操作符,但没用

问题已解决!!谢谢大家

My.ts页面

profile: Profile = {

          fullName: '',
          email: '',
          address: '', 
      };
<ion-item>
  <ion-label>Full Name:</ion-label>
  <ion-input [(ngModel)]="profile.fullName"></ion-input>
</ion-item>
My.html页面

profile: Profile = {

          fullName: '',
          email: '',
          address: '', 
      };
<ion-item>
  <ion-label>Full Name:</ion-label>
  <ion-input [(ngModel)]="profile.fullName"></ion-input>
</ion-item>

全名:

错误类型错误:“\u co.profile为空”谢谢大家。我发现我的错误是在另一个地方。我不知何故在ngOnInit中将“profile”对象从空重新定义为未定义。像这样:

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
   }
}

当您声明概要文件时,您应该添加所有子项,这将停止未定义概要文件

export class Foo {

public profile:any = { 
        fullName='',
        foo = '',
        bar = ''
      }

您始终需要确保获取对象的属性。或者将来你可能会遇到意想不到的问题

要么使用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>

全名:

当绑定到可空对象的属性时,可以通过创建setter和getter并绑定到该属性别名来防止对象为空时出现错误

例如,代替

[(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;
}

\u co
在哪里?用*ngifn保护它。如果这个代码没有问题,请发布完整的代码。@AnkitAgarwal我不知道什么是\u co。它给出了这样一个引用“profile”对象的错误。@Domi你是什么意思?如果我说*ngIf=“profile!=null”,那么它将不会显示表单,但我需要填写表单,以便将这些值提供给“profile”对象Timothy,我理解确保获取属性的必要性,但您能否详细说明“意外问题”-我可以参考有文档记录的列表吗?@sikanderBabwani“意外问题”与角度是这一个。它可能会导致无限循环和许多其他问题。强烈建议您了解它