Создать массив из объектов в угловых JS - PullRequest
0 голосов
/ 16 октября 2019

Я новичок в этих рамках. Я хочу преобразовать объекты в массив в угловых 8. Но я не понимаю, как это работает.

На самом деле, я хочу отобразить несколько транзакций продаж клиента со статусом false. Итак, каким-то образом я получаю значения тех транзакций, совершенных одним и тем же клиентом, как отдельные объекты. Теперь я хочу преобразовать эти объекты в один массив, чтобы можно было повторять их в html-файле через * ngFor.

  export class InvoicesComponent implements OnInit {

  displayedColumns: string[] = ['ProductName', 'CustomerName', 'Quantity', 
  'Rate', 'Total'];
  id;
  dataSource;


  salesTransaction: SalesTransactionElement[];
  constructor(private service: SalesTransactionsService,
          private route: ActivatedRoute) 
  { }

ngOnInit() {

this.id = this.route.snapshot.paramMap.get('id');

this.service.getSalesTransaction(this.id).subscribe((singleData: any) =>
{
  this.service.getAllSalesTransactions().subscribe((data: any) => 
  {
    data.forEach(element => 
     {

      if (singleData.CustomerName === element.CustomerName && 
      element.Status === false) {

        this.salesTransaction = element;
        console.log(this.salesTransaction);
      }

    });
  });
}

Фактические результаты:

/ ***** Отдельнокак два объекта **** /

{SalesTranId: 54, ProductId: 10, CustomerId: 21, InvoiceId: null, ProductName: "Asus"}

{SalesTranId: 51, ProductId:17, CustomerId: 21, InvoiceId: 1, ProductName: "Dell"}

Ожидаемые результаты:

/ ********** Массив объектов ************ /

[{SalesTranId: 54, ProductId: 10, CustomerId: 21, InvoiceId: null, ProductName: "Asus"},

{SalesTranId: 51,ProductId: 17, CustomerId: 21, InvoiceId: 1, ProductName: "Dell"}]

Ответы [ 2 ]

1 голос
/ 16 октября 2019

На самом деле вам назначен объект в определении массива SalesTransactionElement [], поэтому вам нужно нажать SalesTransactionElement.

export class InvoicesComponent implements OnInit {

  displayedColumns: string[] = ['ProductName', 'CustomerName', 'Quantity', 
  'Rate', 'Total'];
  id;
  dataSource;


  salesTransaction: SalesTransactionElement[];
  constructor(private service: SalesTransactionsService,
          private route: ActivatedRoute) 
  { }

ngOnInit() {

this.id = this.route.snapshot.paramMap.get('id');

this.service.getSalesTransaction(this.id).subscribe((singleData: any) =>
{
  this.service.getAllSalesTransactions().subscribe((data: any) => 
  {
    data.forEach(element => 
     {

      if (singleData.CustomerName === element.CustomerName && 
      element.Status === false) {

        this.salesTransaction.push(element);
      }

    });
  });
}
1 голос
/ 16 октября 2019

Инициализируйте массив над конструктором: salesTransaction: SalesTransactionElement[] = []

Затем вставьте этот массив в обработчик forEach: this.salesTransaction.push(element);

...