Невозможно получить доступ к данным, переданным диалоговым окном материала - PullRequest
0 голосов
/ 14 октября 2019

Я передал значения formarray в диалог угловых материалов. Но при отображении я получаю эту ошибку: «Не удается найти другой поддерживающий объект« [объектный объект] »типа« объект ». NgFor поддерживает только привязку к итерируемым объектам, таким как массив» *

Вот мой код

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> 

enter image description here Это данные Iпрошли

1 Ответ

0 голосов
/ 14 октября 2019

Проблема в том, что вы пытаетесь перебрать объект. Это не массив. Если вы хотите перебрать объект с *ngFor, используйте Angular keyvalue pipe. См. Ниже:

<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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...