Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度中的datatable.net无法识别表中的tr_Javascript_Angular_Datatable_Angular Datatables - Fatal编程技术网

Javascript 角度中的datatable.net无法识别表中的tr

Javascript 角度中的datatable.net无法识别表中的tr,javascript,angular,datatable,angular-datatables,Javascript,Angular,Datatable,Angular Datatables,这是我的问题,有时组件会这样渲染表 (没有问题): (问题): 在2张照片中,您可以看到datatables生成的空行,这意味着datatable无法识别这些行,这意味着datatable选项(如search或pageLength)不起作用。我该怎么办 这是我的表格组件: 模板: {{column}} {{column}} 组成部分: 从'@angular/core'导入{Component,Input,OnChanges,OnInit}; 从“../../data/index”

这是我的问题,有时组件会这样渲染表

(没有问题):

(问题):

在2张照片中,您可以看到datatables生成的空行,这意味着datatable无法识别这些行,这意味着datatable选项(如search或pageLength)不起作用。我该怎么办

这是我的表格组件:

  • 模板:

{{column}}
{{column}}
  • 组成部分:
从'@angular/core'导入{Component,Input,OnChanges,OnInit};
从“../../data/index”导入{datatableLanguage}”;
@组成部分({
选择器:“应用程序表”,
templateUrl:“./table.component.html”
})
导出类TableComponent实现OnInit、OnChanges{
@输入()
公共列:数组;
@输入()
公共类外:字符串;
@输入()
公共页脚:布尔值;
公共dtOptions:数据表。设置;
构造函数(){
this.columns=新数组(0);
this.extraClass='';
this.footer=true;
this.dtOptions={};
}
恩戈尼尼特(){
这是。checkRequiredFields();
此.dtOptions={
“语言”:数据表语言,
“响应”:正确
}
}
ngOnChanges(){
这是。checkRequiredFields();
}
checkRequiredFields():void{
if(this.columns.length
{{component.name}
{{component.priceByUnit | number}
{{component.amount | number}}

在这个链接@JanithaRasanga中,您是否使用angular datatable?是的,我使用datatables.net和引导响应样式。不要使用datatables.net版本。使用我在上面提到的datatables。因为它是专门为angular配置的。您的情况是这样的,因为datatable在数据绑定到表后不会触发。请检查t他的链接,以获得想法。(为触发表)@JanithaRasanga,我认为是同一个npm包,因为package.json没有改变,但我看到了链接,在示例中,他们在获取数据后使用一个主题来呈现表,但是我的表在另一个组件中,而内容在父组件中,我怎么做呢?我不知道。尝试将这些代码放到一个组件中
<div class="table-responsive">
    <table datatable [dtOptions]="dtOptions" class="table table-hover" [ngClass]="extraClass" width="100%">
        <thead>
            <tr>
                <th *ngFor="let column of columns">{{ column }}</th>
            </tr>
        </thead>
        <tfoot *ngIf="footer">
            <tr>
                <th *ngFor="let column of columns">{{ column }}</th>
            </tr>
        </tfoot>
        <tbody>
            <ng-content></ng-content>
        </tbody>
    </table>
</div>
import { Component, Input, OnChanges, OnInit } from '@angular/core';

import { datatableLanguage } from "../../data/index";

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

  @Input()
  public columns: Array<string>;

  @Input()
  public extraClass: string;

  @Input()
  public footer: boolean;

  public dtOptions: DataTables.Settings;

  constructor() {
    
    this.columns = new Array<string>(0);
    this.extraClass = '';
    this.footer = true;
    this.dtOptions = {};
  }

  ngOnInit() {
    this.checkRequiredFields();
    
    this.dtOptions = {
      "language": datatableLanguage,
      "responsive": true
    }
  }

  ngOnChanges() {
    this.checkRequiredFields();
  }

  checkRequiredFields(): void {
    if(this.columns.length <= 0)
      throw new Error("Attribute 'columns' is required.");
  }
}
<app-table id="ingredientsTable" [columns]="['Nombre', 'Precio/Unidad', 'Cantidad', 'Acciones']" [footer]="ingredients.length >= 10">
    <tr [class.table-danger]="ingredient.amount <= 0" *ngFor="let ingredient of ingredients">
        <td class="align-middle">{{ ingredient.name }}</td>
        <td class="align-middle text-center">{{ ingredient.priceByUnit | number }}</td>
        <td class="align-middle text-center">{{ ingredient.amount | number }}</td>
        <td>
            <div class="text-center">
                <div class="btn-group">
                    <button class="btn btn-info" (click)="changeModal(ingredient)" data-toggle="modal" data-target="#modalIngredients">
                        <i class="far fa-edit"></i>
                    </button>
                    <button class="btn btn-danger" (click)="deleteIngredient(ingredient)">
                        <i class="far fa-trash-alt"></i>
                    </button>
                </div>
            </div>
        </td>
    </tr>
</app-table>