Почему жизненный цикл OnInit не работает? - PullRequest
0 голосов
/ 28 апреля 2020

Почему это не работает ?? Консоль продолжает выдавать мне ошибку типа; Он не может прочитать свойство сортировки. Может кто-нибудь мне помочь? '' '

import { Component, OnInit, Input } from '@angular/core';
import { Order } from 'src/app/models/order';

@Component({
  selector: 'app-table',
  templateUrl: './table.component.html',
  styleUrls: ['./table.component.css']
})
export class TableComponent implements OnInit {

  @Input() orders: Order[];

  sortedOrders: Order[];

  constructor() { }

  ngOnInit(): void {
    this.sortedOrders = this.sortOrders(this.orders);
    console.log(this.sortedOrders);
  }

  sortOrders(orders: Order[]): Order[] {
    return orders.sort((a, b) => a.personName.localeCompare(b.personName));
  }

}

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Вы используете @Input(), поэтому OnInit ваши данные не будут доступны, поэтому вы должны сделать это в OnChanges

ngOnChanges(): void {
    this.sortedOrders = this.sortOrders(this.orders);
    console.log(this.sortedOrders);
  }
0 голосов
/ 28 апреля 2020

Вам необходимо использовать ngAfterViewInit ловушку жизненного цикла, как он вызывается после того, как Angular полностью инициализировал представление компонента

Попробуйте так:

  ngAfterViewInit(): void {
    this.sortedOrders = this.sortOrders(this.orders);
    console.log(this.sortedOrders);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...