Добавление модуля таблицы PrimeNG в компонент Вызывает ошибку — Превышен максимальный размер стека вызовов

#javascript #angular #typescript #npm #primeng

Вопрос:

У меня есть пакет npm углового компонента, который принимает и возвращает данные. Все это работало нормально, пока я не попытался добавить p-таблицу в свой html. Я сузил его до того, что он встречается в файле модуля компонентов.

Я могу добавить табличный модуль PrimeNG в файл app.module, но если я попытаюсь добавить его в файл модуля компонентов, а затем запустить «npm run packagr», чтобы собрать пакет, я получу следующую ошибку:

 Maximum call stack size exceeded  

Вот мой файл заголовка.module и две строки, вызывающие ошибку

 import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { HeaderComponent } from './header.component'; import { TableModule } from 'primeng/table'; //TABLE MODULE IS CAUSING THE ERROR  @NgModule({  declarations: [HeaderComponent],  imports: [CommonModule, TableModule], //TABLE MODULE IS CAUSING THE ERROR  exports: [  HeaderComponent,  ], }) export class HeaderModule {}  

Я просмотрел другие ответы на эту ошибку, однако они в основном говорят о рекурсивном цикле, в то время как моя ошибка возникает просто при добавлении табличного модуля в файл модулей.

Кто-нибудь знает, почему это вызывает ошибку?

ОБНОВЛЕНИЕ!!!

Вот таблица p, которую я пытаюсь реализовать в своем header.html файл:

 lt;p-table  [columns]="this.templateRows"  [value]="this.tableData"  responsiveLayout="scroll"  [scrollable]="true"  scrollHeight="100px"  [virtualScroll]="true"  gt;  lt;ng-template pTemplate="header" let-columnsgt;  lt;trgt;  lt;th *ngFor="let col of columns"gt;  {{ col.header }}lt;br /gt;  lt;smallgt;{{ col.regex }}lt;/smallgt;  lt;/thgt;  lt;/trgt;  lt;/ng-templategt;  lt;ng-template pTemplate="body" let-rowData let-columns="columns"gt;  lt;trgt;  lt;td *ngFor="let col of columns"gt;  {{ rowData[col.header] }}  lt;/tdgt;  lt;/trgt;  lt;/ng-templategt;  lt;/p-tablegt;  

And here is the app.module which imports the tableModule fine:

 import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { HeaderModule } from './modules/header/header.module'; import { TableModule } from 'primeng/table'; @NgModule({  declarations: [AppComponent],  imports: [BrowserModule, AppRoutingModule, HeaderModule, TableModule],  providers: [],  bootstrap: [AppComponent], }) export class AppModule {}  

Вот файл заголовка.component.ts

 import {  Component,  EventEmitter,  OnInit,  Input,  Output,  ViewChild,  ElementRef, } from '@angular/core'; import * as FileSaver from 'file-saver'; import * as XLSX from 'xlsx';  @Component({  selector: 'app-header-naomi',  templateUrl: './header.component.html',  styleUrls: ['./header.component.css'], }) export class HeaderComponent implements OnInit {  @ViewChild('fileUpload', { static: false }) fileUpload: ElementRef;  headerRow: any = [];  tableData: any = [];  templateRows = [  { field: 'name', header: 'Name', regex: '[a-zA-Z]' },  { field: 'age', header: 'Age', regex: '^[0-9]*


Комментарии:

1. Привет. У вас есть реализация TableModule на HeaderComponent? Можете ли вы поделиться кодом компонента?

2. @Guiditox Здравствуйте, у меня есть таблица ptable, закомментированная в моем html-компоненте заголовка, потому что я просто получаю ошибку при попытке добавить ее в модуль

3. Да, но если у вас есть ошибка в TableModule, и вы используете модуль таблицы в HeaderComponent, важно увидеть вашу реализацию.

4. Ваше приложение.модуль все в порядке

5. Пожалуйста, введите свой код заголовка .ts.

Ответ №1:

Не уверен, что в этом было не так, но мне удалось это исправить, удалив модули узлов и файл.json с блокировкой пакетов. Затем переустановил.

}, { field: 'year group', header: 'Year Group', regex: null }, ]; constructor() {} ngOnInit(): void { } processUpload() { const fileUpload = this.fileUpload.nativeElement; fileUpload.click(); } async uploadFiles() { const fileUpload = this.fileUpload.nativeElement; this.tableData = this.validateSpreadsheet(fileUpload, this.templateRows); } async validateSpreadsheet(fileUpload: any, templateRows: any) { let uploadData: any = []; for (const file of fileUpload.files) { const fileExtension = file.name.split('.').pop(); let valid = false; if (fileExtension === 'csv') { valid = true; } if (!valid) { throw "Unsupported file type, file must be 'of type .csv"; } const reader = new FileReader(); reader.onload = async (e: any) =gt; { const data = new Uint8Array(e.target.result); const workbook = XLSX.read(data, { type: 'array', cellDates: true, dateNF: 'dd/mm/yyyy', }); if (workbook.SheetNames.length === 0) { console.error('No sheets'); } for (const sheetName of workbook.SheetNames) { const rows: any = XLSX.utils.sheet_to_json( workbook.Sheets[sheetName], { defval: null, } ); for (let row of rows) { uploadData.push(row); } } }; reader.readAsArrayBuffer(file); return uploadData; } } }

Комментарии:

1. Привет. У вас есть реализация TableModule на HeaderComponent? Можете ли вы поделиться кодом компонента?

2. @Guiditox Здравствуйте, у меня есть таблица ptable, закомментированная в моем html-компоненте заголовка, потому что я просто получаю ошибку при попытке добавить ее в модуль

3. Да, но если у вас есть ошибка в TableModule, и вы используете модуль таблицы в HeaderComponent, важно увидеть вашу реализацию.

4. Ваше приложение.модуль все в порядке

5. Пожалуйста, введите свой код заголовка .ts.

Ответ №1:

Не уверен, что в этом было не так, но мне удалось это исправить, удалив модули узлов и файл.json с блокировкой пакетов. Затем переустановил.