2016-07-19 4 views
4

私のAngular 2アプリでDataTableを使用したいと思います。しかし、これは動作していません。テンプレート2にスクリプトタグを追加するには、Angular 2に可能性はありません。私はこれをどうやってできるのか知っていますか?私はシステムのいくつかの変更を行う必要があると思います。DataTableをAngular 2で使用する方法

するlist.html:

<table id="example" class="display" cellspacing="0" width="100%"> 
     <thead> 
      <tr> 
       <th>Name</th> 
       <th>Position</th> 
       <th>Office</th> 
       <th>Age</th> 
       <th>Start date</th> 
       <th>Salary</th> 
      </tr> 
     </thead> 
     <tfoot> 
      <tr> 
       <th>Name</th> 
       <th>Position</th> 
       <th>Office</th> 
       <th>Age</th> 
       <th>Start date</th> 
       <th>Salary</th> 
      </tr> 
     </tfoot> 
     <tbody> 
       <tr> 
       <td>Gavin Cortez</td> 
       <td>Team Leader</td> 
       <td>San Francisco</td> 
       <td>22</td> 
       <td>2008/10/26</td> 
       <td>$235,500</td> 
      </tr> 
      <tr> 
       <td>Martena Mccray</td> 
       <td>Post-Sales support</td> 
       <td>Edinburgh</td> 
       <td>46</td> 
       <td>2011/03/09</td> 
       <td>$324,050</td> 
      </tr> 
     </tbody> 
    </table> 

私のコンポーネント:事前に

<!-- Bootstrap Core CSS --> 
    <link href="css/bootstrap.min.css" rel="stylesheet"> 
    <link href="css/jquery.dataTables.min.css" rel="stylesheet"> 
<!-- jQuery --> 
    <script src="js/jquery.js"></script> 
    <script src="js/jquery.dataTables.min.js"></script> 
    <!-- Bootstrap Core JavaScript --> 
    <script src="js/bootstrap.min.js"></script> 

ありがとう:私のindex.htmlで

... 
declare var jQuery:any; 
.. 
ngOnInit():any{ 
     console.log("Augerufen"); 
     jQuery('#example').DataTable(); 
    } 
... 

私は必要するライブラリが追加されました!

+0

何が問題なのですか?あなたが何をしようとしているのかははっきりしていません。あなたが提供したコードはデモンストレーションコードであり、正常に動作しています。なぜjqueryを使用して角度の変化イベントを処理するのですか? – Pogrindis

+0

テーブルをフィルタリングしたいのですが、これを簡単に行うことができます。私はコードをindex.htmlに入れています。しかし、emeddedのtest.htmlを使用すると、jQueryコードは実行されません。私もwindow.alert( "test")で試してみました。イベントが動作しない – hamras

+0

Okテンプレートにスクリプトタグを追加することはできません。角2はそれを削除します – hamras

答えて

5

DataTableのディレクティブを作成し、そのディレクティブをコンポーネントで使用することができます。

ようないろいろ書い:

import {Directive, ElementRef} from '@angular/core'; 
import {Input, OnInit}   from '@angular/core'; 


import { JqueryDataTableEvent } from './jquery-datable-event'; 
import 'jquery.dataTables'; 

declare var jQuery:any; 

@Directive({ 
    selector: '[jqueryDatatable]' 
}) 

export class JqueryDatatableDirective implements OnInit { 
    private _datatable : any; 

    @Input() 
    jqueryDatatable: any; 

    @Input() 
    dataTableEvents: JqueryDataTableEvent[]; 

    constructor(private _element: ElementRef) {} 

    ngOnInit() { 
     this.applyOptions(); 
     this.applyEvents(); 
    } 

    applyOptions() 
    { 
     if (!this.jqueryDatatable) 
      console.error("Empty options array was passed to initialize jqueryDatatable."); 

     this._datatable = jQuery(this._element.nativeElement).DataTable(this.jqueryDatatable || {}); 

    } 

    applyEvents() { 
     this.dataTableEvents.map((event)=> { 
      this._datatable.on(event.eventName, event.selector, event.callback) 
     }); 
    } 
} 

この例を向上させることができますが、基本のためには、その[OK]を備えています。

+0

完全な例を提供できますか? – DarioN1

+2

@ DarioN1ここでは、datatableをディレクティブとして使用するクイックサンプルを紹介します - [https://plnkr.co/edit/t0Zwc3AtQTt98XvIirZ9?p=preview](https://plnkr.co/edit/t0Zwc3AtQTt98XvIirZ9?p=preview) –

関連する問題