2017-09-01 4 views
0

J'essaie d'obtenir une bibliothèque jQuery héritée appelée SlickGrid travaillant dans Angular 4 et je ne peux pas sembler comprendre la meilleure façon de le faire (je suis aussi nouveau à Angular 4 de sorte que cela n'aide pas). Jusqu'à présent, j'ai trouvé un paquet npm pour @types/slickgrid et l'ai installé. J'essaie ensuite de l'importer dans mon élément avec cecomment utiliser SlickGrid (jQuery hérité bibliothèque) dans Angular 4

import { Component, OnInit } from '@angular/core'; 
import * as $ from 'jquery'; 
import {Grid} from 'slickgrid'; 

Cependant, cela me jette une erreur dans la console

app.component.ts(5,24): error TS2306: File 'C:/demo/node_modules/@types/slickgrid/index.d.ts' is not a module. 

J'ai aussi essayé avec ce import 'slickgrid' mais je reçois la même erreur

Voici mon fichier complet component.ts

import { Component, OnInit } from '@angular/core'; 
import * as $ from 'jquery'; 
import {Grid} from 'slickgrid'; 

@Component({ 
    selector: 'my-app', 
    template: `<td valign='top' width='50%'> 
     <div id='myGrid' style='width:600px;height:500px;'></div> 
    </td>` 
}) 
export class AppComponent implements OnInit { 

    ngOnInit(): void { 
     let grid; 
     let columns = [ 
     {id: 'title', name: 'Title', field: 'title'}, 
     {id: 'duration', name: 'Duration', field: 'duration'}, 
     {id: '%', name: '% Complete', field: 'percentComplete'}, 
     {id: 'start', name: 'Start', field: 'start'}, 
     {id: 'finish', name: 'Finish', field: 'finish'}, 
     {id: 'effort-driven', name: 'Effort Driven', field: 'effortDriven'} 
     ]; 
     let options = { 
     enableCellNavigation: true, 
     enableColumnReorder: false 
     }; 
     let data = []; 
     for (let i = 0; i < 500; i++) { 
     data[i] = { 
      title: 'Task ' + i, 
      duration: '5 days', 
      percentComplete: Math.round(Math.random() * 100), 
      start: '01/01/2009', 
      finish: '01/05/2009', 
      effortDriven: (i % 5 === 0) 
     }; 
     } 
     $(() => { 
     grid = new Grid('#myGrid', data, columns, options); 
     }); 
    } 
} 

Et mon index.html où j'importer les bibliothèques (je pourrais aller avec WebPack finalement, si je peux obtenir ce cours)

<html> 
    <head> 
    <link rel="stylesheet" type="text/css" href="styles.css"/> 
    <link rel="stylesheet" type="text/css" href="/node_modules/slickgrid-6pac/slick.grid.css"/> 
    <link rel="stylesheet" type="text/css" href="/components/css/SlickGrid.css"/> 
    </head> 
    <body> 
     <my-app> Loading... </my-app> 
    </body> 
    <script src="/node_modules/slickgrid-6pac/lib/jquery-1.11.2.js"></script> 
    <script src="/node_modules/slickgrid-6pac/lib/jquery.event.drag-2.2.js"></script> 
    <script src="/node_modules/underscore/underscore-min.js"></script> 
    <script src="/node_modules/slickgrid-6pac/slick.core.js"></script> 
    <script src="/node_modules/slickgrid-6pac/slick.grid.js"></script> 
    <!-- Polyfill(s) for older browsers --> 
    <script src="/node_modules/core-js/client/shim.min.js"></script> 
    <script src="/node_modules/zone.js/dist/zone.min.js"></script> 
    <script src="/node_modules/reflect-metadata/Reflect.js"></script> 
    <script src="/node_modules/systemjs/dist/system.src.js"></script> 
    <script src="/dist/basic_slickgrid_ts/systemjs.config.js"></script> 
    <script> 
    System.import('app').catch(function(err){ console.error(err); }); 
    </script> 
</html> 

je vraiment besoin de ce travail et je ne sais pas quoi d'autre pour essayer.

+0

vous pouvez non typages approcher ce lien pourrait être utile [lien] (https://rahulrsingh09.github.io/AngularConcepts/faq). la seule question qui lie les tiers js sans les dactylographier –

+0

merci je regarderais certainement, semble encore mieux car je ne dois pas compter sur une définition de type qui pourrait être périmée. – ghiscoding

+0

incroyable Je l'ai eu le travail, si vous souhaitez le poster comme une réponse, je l'accepterais certainement et l'upvote. Merci beaucoup – ghiscoding

Répondre

1

Merci beaucoup à @Rahul Singh qui a posté un commentaire qui répond à ma question.

Installer angulaire-CLI et modifier le fichier angular-cli.json

{ 
    "apps": [ 
    { 
    "styles": [ 
     "../node_modules/slickgrid/slick.grid.css", 
     "styles.css" 
    ], 
    "scripts": [ 
     "../node_modules/slickgrid/lib/jquery-1.8.3.js", 
     "../node_modules/slickgrid/lib/jquery.event.drag-2.2.js", 
     "../node_modules/slickgrid/slick.core.js", 
     "../node_modules/slickgrid/slick.grid.js" 
    ],  
} 

Faites un MNP installer de la bibliothèque de l'héritage

npm install slickgrid 

ajouter <div> pour la grille dans le fichier component.html

<div id='myGrid' style='width:600px;height:500px;'></div> 

et enfin le component.ts

import { Component, OnInit } from '@angular/core'; 
import $ from 'jquery/dist/jquery'; 
import jQuery from 'jquery/dist/jquery'; 

// using external js modules in Angular 
declare var Slick: any; 
@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'] 
}) 
export class AppComponent implements OnInit { 
    title = 'app'; 

    ngOnInit(): void { 
     let grid; 
     const columns = [ 
     {id: 'title', name: 'Title', field: 'title'}, 
     {id: 'duration', name: 'Duration', field: 'duration'}, 
     {id: '%', name: '% Complete', field: 'percentComplete'}, 
     {id: 'start', name: 'Start', field: 'start'}, 
     {id: 'finish', name: 'Finish', field: 'finish'}, 
     {id: 'effort-driven', name: 'Effort Driven', field: 'effortDriven'} 
     ]; 
     const options = { 
     enableCellNavigation: true, 
     enableColumnReorder: false 
     }; 
     let data = []; 
     for (let i = 0; i < 500; i++) { 
     data[i] = { 
      title: 'Task ' + i, 
      duration: '5 days', 
      percentComplete: Math.round(Math.random() * 100), 
      start: '01/01/2009', 
      finish: '01/05/2009', 
      effortDriven: (i % 5 === 0) 
     }; 
     } 
     $(() => { 
     grid = new Slick.Grid('#myGrid', data, columns, options); 
     }); 
    } 
} 

et ça marche, merci encore @Rahul

+0

super travail @ghiscoding +1 –

+0

Je n'avais besoin que d'un guide, merci @Rahul – ghiscoding

+1

juste pour carillon ici, je maintiens la branche la plus active (6pac). Je reçois régulièrement des demandes pour une version packagée, mais n'ayant rien à voir avec npm au-delà du très basique, je ne sais pas vraiment comment construire un paquet correctement. Si quelqu'un qui connaît npm ou l'un des autres gestionnaires de paquets veut mettre en place un paquet, de préférence un qui ne perturbe pas la base de code pour les développeurs qui utilisent un gestionnaire de paquets différent (ou non), je serais heureux de l'intégrer dans mon repo github. –