【问题标题】:Unable to access data passed by angular material dialog无法访问角度材质对话框传递的数据
【发布时间】:2019-10-14 13:05:39
【问题描述】:

我已将 formarray 值传递给角度材质对话框。但是在显示时我收到此错误:“找不到类型为 'object' 的不同支持对象 '[object Object]'。NgFor 仅支持绑定到 Iterables,例如 Array”

这是我的代码

openDialog() {


this.purchase_id = ("purchase" + new Date().toISOString())

for(let i=0 ;i<this.product.value.length; i++) {


  let new_purchase : any = {
    purchase_id : this.purchase_id,
    quantity : this.product.value[i].product_quantity,
    buyingprice : this.product.value[i].product_Buyingprice,
    date : new Date(),
    product_id : Number (this.product.value[i].product_name),
    vendor_id : this.vendor_id,
    totalprice : String (this.product.value[i].product_quantity * this.product.value[i].product_Buyingprice)

  }


  const dialogRef =  this.dialog.open(ConfirmDialogComponent,{data : {purchase : new_purchase} })
  dialogRef.afterClosed().subscribe(result => {
  console.log(`result : ${result}`)


  if(result == 'true') {

    this.newPurchase()

  }


})

}

}

对话 ts

`export class ConfirmDialogComponent implements OnInit {


  private savedForLater : any;


  constructor(
    public containingDialog: MatDialogRef<ConfirmDialogComponent>,

    @Inject(MAT_DIALOG_DATA) public data : any)  { 

        this.savedForLater = data;

        console.log(this.savedForLater)


    }
`

对话框html

    <p>confirm-dialog works!</p>
<h2 mat-dialog-title>Details</h2>
<mat-dialog-content> 
        <div *ngFor = " let data of savedForLater"> 
                {{savedForLater.quantity}}
        </div>
</mat-dialog-content>


<mat-dialog-actions>


    <button mat-button mat-dialog-close mat-dialog-close = "false">log out</button>
    <button mat-button mat-dialog-close mat-dialog-close = "true">login</button>


</mat-dialog-actions> 

这是我传过来的数据

【问题讨论】:

  • savedForLater 是否持有 array 数据?它似乎ngFor 没有收到它可以迭代的数据。 &lt;div *ngFor = " let data of savedForLater"&gt; {{savedForLater.quantity}} &lt;/div&gt;这些声明对于角度来说没有意义

标签: angular angular-material angular-material2 angular8


【解决方案1】:

问题是您正在尝试迭代对象。它不是一个数组。如果你想用*ngFor 迭代对象,那么使用Angular 的keyvalue 管道。见下文:

<div *ngFor = " let data of savedForLater.purchase | keyvalue"> 
  {{data.key}} : {{data.value}}
</div>

你也可以只打印值。

<div *ngFor = " let data of savedForLater.purchase | keyvalue"> 
   {{data.value}}
</div>

参考:https://angular.io/api/common/KeyValuePipe

【讨论】:

猜你喜欢
  • 2019-06-22
  • 1970-01-01
  • 2021-08-22
  • 2017-06-14
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多