如何检查 ReportControl 对象上是不是存在 Reportid 或不使用 *ngif?

Posted

技术标签:

【中文标题】如何检查 ReportControl 对象上是不是存在 Reportid 或不使用 *ngif?【英文标题】:How to check Reportid exist on ReportControl object or not using *ngif?如何检查 ReportControl 对象上是否存在 Reportid 或不使用 *ngif? 【发布时间】:2020-09-10 18:02:24 【问题描述】:

我在 Angular 7 应用程序上工作,我遇到了需要检查的问题

如果 Reportid 存在或不存在于 Report Control 对象上,则使用 component.html 上的 *ngIf。

report.component.ts:

displayreport: any = ;
Reportid: string;

ngOnInit() 
  this._displayreport.GetReportControl(Reportid).subscribe((res: any) => 
      this.ReportControl = res;
      console.log("report control is" + JSON.stringify(this.ReportControl)
      );
  

this.ReportControl 只返回一个对象:

"reportid":"2040","reportName":"financialAsset","reportType":"1"

预期结果:

*ngIf="???????"

【问题讨论】:

【参考方案1】:
displayreport: any = ;
Reportid: string;
ReportControl: any;
ngOnInit() 
  this._displayreport.GetReportControl(this.Reportid).subscribe((res: any) => 
      this.ReportControl = res;
      console.log("report control is" + JSON.stringify(this.ReportControl)
      );
  

如果您在 html(ngIf) 中的 response(res) 中检查值 reportid 是否可用,可以通过以下方式实现:

    *ngIf="ReportControl && ReportControl.reportid" *ngIf="ReportControl?.reportid"

两者的工作方式类似,它们检查ReportControl是否存在,然后检查对应的reportid是否存在,这种方法更可靠,因为它避免了未定义的属性错误。

【讨论】:

【参考方案2】:

用作 *ngIf = "报表控制器?.reportid"

【讨论】:

在你的场景中没有循环是什么意思 因为这是对象并且有更多的属性 即使您的对象具有不同的属性,ngIf 也将作为单个条件检查而不是循环。希望我能正确理解您的担忧 当在 ngif 上使用两个条件时使用 and or && 表示 *ngif(第一个条件和第二个) 或使用 && 你需要使用&&

以上是关于如何检查 ReportControl 对象上是不是存在 Reportid 或不使用 *ngif?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查页面上是不是已存在具有 ID 的对象? [复制]

如何检查 C# 中的动态匿名类型上是不是存在属性?

如何检查 YT.Player 对象是不是已准备好?

如何检查在 C# 的全局类中找到的数组中是不是存在对象

如何检查对象是不是处于空状态?

如何检查对象是不是实现了接口? [复制]