私はserver side processingオプションでAngular DataTablesを使用しようとしていますが、 "Angular way example"で有効にしようとすると、最初の要求のみレンダリングされ、後続の要求(ページング、順序付け、検索)テーブル。Angular Dataの例でサーバー側オプションをAngular DataTablesで使用するにはどうすればよいですか?
1
A
答えて
2
ちょっと掘り下げた後、サーバー側の呼び出しを処理する独自の機能でajax
オプションを上書きすることを示唆している無関係なuser contributed noteが見つかりました。
ここで、空の配列をDataTablesコールバックに戻すのは、レンダラーを使用してテーブルをレンダリングしないことです。これはAngularによって行われます。また、列名をサーバーに指定することもお勧めします。
ngOnInit(): void {
var that = this;
this.dtOptions = {
pagingType: 'full_numbers',
serverSide: true,
processing: true,
ajax: (dataTablesParameters: any, callback) => {
that.http
.post<DataTablesResponse>('/api/Persons', dataTablesParameters, {})
.subscribe(resp => {
that.persons = resp.data;
callback({
recordsTotal: resp.recordsTotal,
recordsFiltered: resp.recordsFiltered,
data: [],
});
});
},
columns: [
{ data: "id" },
{ data: "firstName" },
{ data: "lastName" },
],
};
}
DataTableには表示する行がないと考えられるため、「データなし」というメッセージが表示されます。それを処理する最も簡単な方法は、CSSでそれを隠すことです。あなたのglobal styles.cssにそれを追加することができます。
.dataTables_empty {
display: none;
}
、テンプレートでそれを自分で示しています
<tr *ngIf="persons?.length == 0">
<td colspan="3" class="no-data-available">No data!</td>
</tr>
だから、ここで完全なコードです。アンギュラ5.0.0でテストされ、datatables.net 1.10.16と角度-のDataTable 5.0.0:
角度ウェイ・サーバside.component.ts
import { Component, OnInit } from '@angular/core';
import { HttpClient, HttpResponse } from '@angular/common/http';
import { DataTablesResponse } from '../datatables/datatables-response';
import { Person } from './person';
@Component({
selector: 'app-angular-way-server-side',
templateUrl: 'angular-way-server-side.component.html',
styleUrls: ['angular-way-server-side.component.css'],
})
export class AngularWayServerSideComponent implements OnInit {
dtOptions: DataTables.Settings = {};
persons: Person[];
constructor(private http: HttpClient) { }
ngOnInit(): void {
var that = this;
this.dtOptions = {
pagingType: 'full_numbers',
serverSide: true,
processing: true,
ajax: (dataTablesParameters: any, callback) => {
that.http
.post<DataTablesResponse>('/api/Persons', dataTablesParameters, {})
.subscribe(resp => {
that.persons = resp.data;
callback({
recordsTotal: resp.recordsTotal,
recordsFiltered: resp.recordsFiltered,
data: [],
});
});
},
columns: [
{ data: "id" },
{ data: "firstName" },
{ data: "lastName" },
],
};
}
}
角度-way-サーバーside.component.html
<table datatable [dtOptions]="dtOptions" class="row-border hover">
<thead>
<tr>
<th>ID</th>
<th>First name</th>
<th>Last name</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let person of persons">
<td>{{ person.id }}</td>
<td>{{ person.firstName }}</td>
<td>{{ person.lastName }}</td>
</tr>
<tr *ngIf="persons?.length == 0">
<td colspan="3" class="no-data-available">No data!</td>
</tr>
</tbody>
</table>
角度ウェイ・サーバside.component.css
.no-data-available {
text-align: center;
}
person.ts
export class Person {
id: number;
firstName: string;
lastName: string;
}
のDataTable-response.ts
export class DataTablesResponse {
data: any[];
draw: number;
recordsFiltered: number;
recordsTotal: number;
}
のsrc/Styles.cssを
.dataTables_empty {
display: none;
}
関連する問題
- 1. Angular 2でサーバー側レンダリングを使用するにはどうすればよいですか?
- 2. Angular Datatablesのデータの初期注文を無効にするにはどうすればよいですか?
- 3. Angular-CLIでAngularアプリケーションでAOTを実行するにはどうすればよいですか?
- 4. Angular DataTables列ビルダでng-clickの作業を行うにはどうすればいいですか?
- 5. 複数のAngular 2プロジェクト間でAngular 2コンポーネントを共有するにはどうすればよいですか?
- 6. AngularとTypeScriptでAngularJSのグローバルな 'angular'変数にアクセスするにはどうすればよいですか?
- 7. Angular 2でファイルをダウンロードするにはどうすればよいですか?
- 8. * ngForをAngularでアニメーション化するにはどうすればよいですか?
- 9. Angular 2でAPIにアクセスするにはどうすればよいですか?
- 10. Angular Leaflet DirectiveをAngular Material Design内で正しくレンダリングするにはどうすればよいですか?
- 11. Angular 2では、実行時に別のルートを使用するにはどうすればよいですか?
- 12. CordovaアプリをAngular Dart 1からAngular 2に変換するにはどうすればよいですか?
- 13. Angularプロジェクトのソースコードでi18tをテキストに使用するにはどうすればよいですか?
- 14. Angular JSのディレクティブのテンプレート内で "ng-repeat"を使用するにはどうすればよいですか?
- 15. 私のAngular 2アプリをバレルファイルのインポートで使用するにはどうすればよいですか?
- 16. Angular 4からAngular 5に移行するにはどうすればよいですか?
- 17. CSS flexboxでAngularのmaterial2ドロップダウンを使用するにはどうすればよいですか?
- 18. Angular 1.xの入力フィールドでカスタムディレクティブを使用するにはどうすればよいですか?
- 19. Angular Materialで複数のDatepickerを使用するにはどうすればよいですか?
- 20. Angular 2のテンプレートでjqueryを使用するにはどうすればよいですか?
- 21. HttpClientを使用してAngular 5で応答ヘッダーにアクセスするにはどうすればよいですか?
- 22. AngularでJSONファイルを読むにはどうすればよいですか?
- 23. モデルクラスをAngularモジュールに含めるにはどうすればよいですか?
- 24. Angularテクニックを使用してAngular2でツールチップを作成するにはどうすればよいですか?
- 25. webpackを使用してAngular 2でgmaps.jsを消費するにはどうすればよいですか?
- 26. TypeScriptを使用してAngular 2コンポーネントでモデルクラスを宣言するにはどうすればよいですか?
- 27. Routingを使用してAngular 2アプリケーションでデータを共有するにはどうすればよいですか?
- 28. Angular Jsで変数を使用してページタイトルを変更するにはどうすればよいですか?
- 29. angular-ui-utilsを使用してアクティブクラスをnavbarに適用するにはどうすればよいですか?
- 30. Angular 2コンポーネントでjQueryプラグインを使用するにはどうすればよいですか?
おい、よこの答えを受け入れる必要があります。それは非常に良い答えです。 – Stack
ねえ、ありがとう!私は自分の答えを受け入れるのに2日間待たなければならない。 –
このリンクを確認できますかhttps://stackoverflow.com/questions/47568013/get-more-than-1000-row-in-the-data-table-in-angular-js-from-mongodb –