it-swarm.com.ru

angular 4 с bootstrap 4 таблица данных

Мне нужно использовать таблицу с angular 4 и bootstrap 4, но официальная таблица bootstrap 4 выглядит не слишком хорошо. Я нашел этот проект git: https://www.npmjs.com/package/angular-4-data-table-fix

но не могу найти документацию о том, как его использовать. Кто-нибудь знает этот проект или похожий и может помочь?

Благодарю.

7
Shay

Вы можете увидеть код здесь: https://github.com/ggmod/angular-2-data-table-demo/tree/master/app

По сути, вы создаете новый компонент для таблицы, как это (взято из примера выше):

import { Component } from '@angular/core';
import { DataTableResource } from 'angular-2-data-table';
import persons from './data-table-demo1-data';


@Component({
    selector: 'data-table-demo-1',
    providers: [],
    templateUrl: 'app/demo1/data-table-demo1.html',
    styleUrls: ['app/demo1/data-table-demo1.css']
})
export class DataTableDemo1 {

    itemResource = new DataTableResource(persons);
    items = [];
    itemCount = 0;

    constructor() {
        this.itemResource.count().then(count => this.itemCount = count);
    }

    reloadItems(params) {
        this.itemResource.query(params).then(items => this.items = items);
    }

    // special properties:

    rowClick(rowEvent) {
        console.log('Clicked: ' + rowEvent.row.item.name);
    }

    rowDoubleClick(rowEvent) {
        alert('Double clicked: ' + rowEvent.row.item.name);
    }

    rowTooltip(item) { return item.jobTitle; }
}

И файл шаблона HTML

<div style="margin: auto; max-width: 1000px; margin-bottom: 50px;">
    <data-table id="persons-grid"
        headerTitle="Employees"
        [items]="items"
        [itemCount]="itemCount"
        (reload)="reloadItems($event)"

        (rowClick)="rowClick($event)"
        (rowDoubleClick)="rowDoubleClick($event)"
        [rowTooltip]="rowTooltip"
        >
        <data-table-column
            [property]="'name'"
            [header]="'Name'"
            [sortable]="true"
            [resizable]="true">
        </data-table-column>
        <data-table-column
            [property]="'date'"
            [header]="'Date'"
            [sortable]="true">
            <template #dataTableCell let-item="item">
                <span>{{item.date | date:'yyyy-MM-dd'}}</span>
            </template>
        </data-table-column>
        <data-table-column
            property="phoneNumber"
            header="Phone number"
            width="150px">
        </data-table-column>
        <data-table-column
            [property]="'jobTitle'"
            [header]="'Job title'"
            [visible]="false">
        </data-table-column>
        <data-table-column
            [property]="'active'"
            [header]="'Active'"
            [width]="100"
            [resizable]="true">
            <template #dataTableHeader let-item="item">
                <span style="color: rgb(232, 0, 0)">Active</span>
            </template>
            <template #dataTableCell let-item="item">
                <span style="color: grey">
                <span class="glyphicon glyphicon-ok" *ngIf="item.active"></span>
                <span class="glyphicon glyphicon-remove" *ngIf="!item.active"></span>
                </span>
            </template>
        </data-table-column>
    </data-table>
</div>

Конечно, в вашем случае источник данных и структура могут отличаться, поэтому вам нужно настроить этот код в соответствии с желаемой структурой.

Не забудьте объявить ваш компонент в app.module.ts, и тогда вы сможете использовать его, скажем, в app.component.html, как в примере, где data-table-demo-1 - это ваш компонент, имеющий таблицу:

<div style="padding: 25px">
  <data-table-demo-1></data-table-demo-1>
</div>

EDIT: Вы также должны импортировать модуль таблицы данных, например: 

import { DataTableModule } from 'angular-2-data-table'; // or angular-4-data-table

Тогда app.module.ts может выглядеть так: 

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppComponent } from './app.component';
import { TableComponent } from './table/table.component';

import { DataTableModule } from 'angular-4-data-table'; // notice this

@NgModule({
  declarations: [
    AppComponent,
    TableComponent
  ],
  imports: [
    BrowserModule,
    DataTableModule // notice this one
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }
11
Apostrofix

Если вы ищете действительно хорошую динамическую таблицу данных, вы должны использовать Angular Material. Это предпочтительная вещь, но Материал лучше выглядит и более полезен, чем Bootstrap, и с точки зрения данных его легко реализовать и понять. Работает довольно хорошо из коробки.

https://material.angular.io/components/table/overview

1
Joshua Michael Calafell

Для таблицы данных вы, вероятно, хотите, чтобы столбцы имели такие функции, как сортировка, фильтрация, изменение порядка столбцов и разбиение на страницы. Если так, модуль ngx-datatable от swimlane довольно хорош. Я использую его для каталога корпоративных данных, и он обрабатывает большие наборы данных без проблем.

Ссылка на документацию с датой ngx

1
Bv Kay