-3

如何编写角度指令来呈现多个表

4

1 回答 1

0
In ts file you import 

import { Component, OnInit, ChangeDetectorRef, ViewChild, ViewChildren, QueryList } from '@angular/core';
import { DataTableDirective } from 'angular-datatables';
import { Subject } from 'rxjs';

export class SoftwareComponent implements OnInit {

  @ViewChildren(DataTableDirective)
  dtElements: QueryList<DataTableDirective>;
  dtOptions: DataTables.Settings = {};
  dtTrigger1: Subject<any> = new Subject<any>();
  dtTrigger2: Subject<any> = new Subject<any>();
this.dtOptions = {
      processing: true,
      lengthMenu: [10, 100, 500],
      destroy: true,
      lengthChange: false,
      searching: false,
      order: [[1, "desc"]],
      language: {
        info: "&nbsp;_START_ to _END_ of _TOTAL_"
      }
    };
ngAfterViewInit(): void {
    this.dtTrigger1.next();
    this.dtTrigger2.next();
  }

  ngOnDestroy(): void {
    // Do not forget to unsubscribe the event
    this.dtTrigger1.unsubscribe();
    this.dtTrigger2.unsubscribe();
  }


  rerender(): void {
    this.dtElements.forEach((dtElement: DataTableDirective) => {
      if (dtElement.dtInstance)
        dtElement.dtInstance.then((dtInstance: DataTables.Api) => {
          dtInstance.destroy();
        });
    });
    setTimeout(() => {
      this.dtTrigger1.next();
      this.dtTrigger2.next();
    });

  }

}

In Html File you call

    <table datatable class="table dataTable row-border"
                                                        [dtOptions]="dtOptions" [dtTrigger]="dtTrigger1">
    <thead>....</thead>
    <tbody>'''</tbody>
    </table>
    <table datatable class="table dataTable row-border"
                                                        [dtOptions]="dtOptions" [dtTrigger]="dtTrigger2">
    <thead>....</thead>
    <tbody>'''</tbody>
    </table>
于 2021-04-23T06:06:31.147 回答