Невозможно прочитать свойство forEach неопределенного, Angular/TypeScript

Доброе утро У меня возникла эта проблема, и я просто не знаю, как ее решить. Это существующий код, который в настоящее время создает административное представление текущих пользователей. Существует компонент таблицы, который мы используем для привязки пользовательских данных. Однако я получаю это Невозможно прочитать свойство forEach неопределенной ошибки в файле TS компонента таблицы.

table.components.ts

export class TableComponent implements OnInit {
  @Input() header;
  @Input() columns: any[];
  @Input() data;

  constructor() {}

  columnKeyValuePairs = [];
  displayedColumns = [];

  tableData: MatTableDataSource<any>;

  @ViewChild(MatSort, { static: false }) sort: MatSort;

  expandedElement;

  ngAfterViewInit() {
    this.tableData.sort = this.sort;
  }

  ngOnInit(): void {
    this.columns.forEach((col) => {
      let pair = Object.entries(col);
      this.columnKeyValuePairs.push(pair[0]);
      this.displayedColumns.push(pair[0][0]);
    });
  }

  ngOnChanges(old) {
    if (old.data) {
      this.tableData = new MatTableDataSource<any>(old.data.currentValue);
    }
  }
}

Из приведенного выше кода это строка, в которой я получаю сообщение об ошибке, this.columns.forEach((col) => {

Admin-ui.components.ts

export class AdminUiComponent implements OnInit {
  public users: any[] = [];
  resetUsers: any;
  @Input() header: string;  
  @Input() columns: [
    { userName: "User Name" },
    { firstName: "First Name" },
    { lastName: "Last Name" },
    { email: "Email" },
    { roleId: "Role ID" },
    { statusId: "Status ID" },
  ];
  @Input() data: any[];  

  constructor(    
    private userService: UserService,    
  ) { }  
 
  ngOnInit(): void {   
    this.userService;
    
    this.userService.getUsers().subscribe(data => {
      this.users = data.users;
      console.info(data.users); 
     
    });
  }
}

admin-ui.components.html

<div class = "admin">
    <app-table [header] = "header"
               [data] = "users"
               [columns] = "columns">
    </app-table>
</div>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
958
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Admin-ui.component.ts

export class AdminUiComponent implements OnInit {
  public users: any[] = [];
  resetUsers: any;
  @Input() header: string;  
  columns = [ // Remove @Input and use `=` instead of `:`
    { userName: "User Name" },
    { firstName: "First Name" },
    { lastName: "Last Name" },
    { email: "Email" },
    { roleId: "Role ID" },
    { statusId: "Status ID" },
  ];
  ...

спасибо.... к сожалению, это не работает. Это то, что у меня было изначально. Я все равно получу ту же ошибку.

KenNotAnthony 23.12.2020 15:43

вы используете <app-table> в другой части компонента AdminUI? кажется, что утвержденный ответ такой же, как и то, что я сделал.

wangdev87 24.12.2020 03:26
Ответ принят как подходящий

Пользовательский интерфейс администратора

export class AdminUiComponent implements OnInit {
      public users: any[] = [];
      resetUsers: any;
      @Input() header: string;  
      columns = [ // Remove @Input and use `=` instead of `:`
        { userName: "User Name" },
        { firstName: "First Name" },
        { lastName: "Last Name" },
        { email: "Email" },
        { roleId: "Role ID" },
        { statusId: "Status ID" },    
      ];
...
}

Таблица Компонент:

....
ngOnInit(): void {
  if (Array.isArray(this.columns))
    this.columns.forEach((col) => {
      let pair = Object.entries(col);
      this.columnKeyValuePairs.push(pair[0]);
      this.displayedColumns.push(pair[0][0]);
    });
  }
....

Другие вопросы по теме