2017-05-18 19 views
0

に私は角度2を学び、私はそれがいずれかを与えていない角度2でピボットテーブルのjsをラップしようとしているときに、角度2アプリケーションインポートピボットテーブルJS角度2

にニコラスのkruchtenのピボットテーブルJSをインポートしようとしていますしかし、ブラウザで同じものをチェックしようとするとエラーが発生する。ピボットテーブルが表示されない。

コンポーネントが作成されているが、常に空であることを確認できます。

私はAfterViewInitがテーブルを表示させるべきだと思います。

\\ pivot.component.ts

import {Component , Inject, ElementRef, AfterViewInit} from '@angular/core'; 

declare var jQuery:any; 
declare var $:any; 
import 'pivottable/dist/pivot.min.js'; 
import 'pivottable/dist/pivot.min.css'; 
@Component({ 
    selector: 'app-pivot', 
    template: `<div id="pivot"></div>` 
}) 

export class PivotWrapper { 

private el: ElementRef; 
//constructor spelling was incorrect now working fine 
constructor (@Inject(ElementRef)el: ElementRef){ 
    this.el = el; 
} 
ngAfterViewInit(){ 

    if (!this.el || 
     !this.el.nativeElement || 
     !this.el.nativeElement.children){ 
      console.log('cant build without element'); 
      return; 
    } 

    var container = this.el.nativeElement; 
    var inst = jQuery(container); 
    var targetElement = inst.find('#pivot'); 

    if (!targetElement){ 
     console.log('cant find the pivot element'); 
     return; 
    } 

    //this helps if you build more than once as it will wipe the dom for that element 
    while (targetElement.firstChild){ 
     targetElement.removeChild(targetElement.firstChild); 
    } 

    //here is the magic 
    targetElement.pivot([ 
      {color: "blue", shape: "circle"}, 
      {color: "red", shape: "triangle"} 
     ], 
     { 
      rows: ["color"], 
      cols: ["shape"] 
     }); 
} 

}

\\ app.component.ts

import { Component,ElementRef,Inject} from '@angular/core'; 

declare var jQuery: any; 
import {PivotWrapper} from './pivot.component'; 

@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'] 
}) 
export class AppComponent {} 

\\

import { BrowserModule } from '@angular/platform-browser'; 
import { NgModule } from '@angular/core'; 
import { FormsModule } from '@angular/forms'; 
import { HttpModule } from '@angular/http'; 
import { MaterialModule } from '@angular/material'; 
import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; 
import {NoopAnimationsModule} from '@angular/platform-browser/animations'; 
import { AppComponent } from './app.component'; 
import {PivotWrapper} from './pivot.component'; 

@NgModule({ 
    declarations: [ 
    AppComponent, PivotWrapper 
    ], 
    imports: [ 
    BrowserModule, 
    BrowserAnimationsModule, 
    NoopAnimationsModule, 
    FormsModule, 
    HttpModule, 
    MaterialModule.forRoot() 
    ], 
    providers: [], 
    bootstrap: [AppComponent, PivotWrapper] 
}) 
export class AppModule { } 
+0

AfterViewInitの使い方はありません。私はそれが実装され、buildPivot()を呼び出す必要がありますが、それは正しいですか? – cmonkey

+0

@ cmonkeyコンストラクタのスペルが間違っていたので、それは愚かな間違いでした。 しかし、 'pivotUI'関数を使ってみるとレンダリングエラーが発生します – user2881430

答えて

0
をapp.module.ts

ソリューションについては下記を参照してください: 私は角CLI

--package.json

"jquery": "^3.2.1", 
"jquery-ui-dist": "^1.12.1",  
"pivottable": "^2.13.0", 

--angular-cli.jsonを使用しています

"styles": [ 
    "../node_modules/pivottable/dist/pivot.min.js", 
    "styles.css" 
    ], 
    "scripts": ["../node_modules/jquery/dist/jquery.min.js", 
    "../node_modules/jquery-ui-dist/jquery-ui.min.js", 
    "../node_modules/pivottable/dist/pivot.min.js" 

    ], 

--app-ピボットラッパー

import { Component, OnInit,Inject, ElementRef, AfterViewInit } from '@angular/core'; 

import 'pivottable/dist/pivot.min.js'; 
import 'pivottable/dist/pivot.min.css'; 
declare var jQuery:any; 
declare var $:any; 

@Component({ 
selector: 'app-pivot-wrapper', 
templateUrl: './pivot-wrapper.component.html', 
styleUrls: ['./pivot-wrapper.component.css'] 
}) 

export class PivotWrapperComponent implements OnInit { 
private el: ElementRef; 
constructor(@Inject(ElementRef)el: ElementRef) { 
    this.el = el; 

} 

ngOnInit() {  
} 

ngAfterViewInit(){ 

if (!this.el || 
    !this.el.nativeElement || 
    !this.el.nativeElement.children){ 
     console.log('cant build without element'); 
     return; 
} 

    var container = this.el.nativeElement; 
    var inst = jQuery(container); 
    var targetElement = inst.find('#output'); 

    if (!targetElement){ 
    console.log('cant find the pivot element'); 
    return; 
    } 


while (targetElement.firstChild){ 
    targetElement.removeChild(targetElement.firstChild); 
    } 

    //here is the magic 
    targetElement.pivot([ 
     {color: "blue", shape: "circle"}, 
     {color: "red", shape: "triangle"} 
    ], 
    { 
     rows: ["color"], 
     cols: ["shape"] 
    }); 
    } 
} 

--pivot-wrapper.component.html

<div id="output"></div> 
0

これは(typesciptエコシステムで作業pivottobaleと読む)ピボットテーブルhttps://github.com/kurtzace/pivottableandreactと反応して使用する例である - あなたの質問にはお答えできない場合があります - しかし、与えるかもしれませんあなたはヒントを得ます