2016-11-23 6 views
2

Ich versuche die progressbar.js-Bibliothek von npm in meiner Angular 2-Anwendung zu verwenden, die Angular-CLI verwendet.NPM-Bibliotheken in Angular mit Angular-CLI einschließen und verwenden

Ich habe es mit npm install progressbar.js --save installiert. Die Dokumentation von progressbar.js sagt, es mit var ProgressBar = require('progressbar.js') zu verwenden, die ich nicht verwenden kann, weil ich SystemJS nicht habe.

suchte ich ein wenig und fand eine Lösung, die es in den Skripten Array des Winkel cli.json aufzunehmen, was ich auch tat:

"scripts": [ 
    "../node_modules/progressbar.js/dist/progressbar.js" 
    ], 

Die Anwendung kompiliert fein mit ng serve, aber ich wirklich couldn‘ wie Sie die mitgelieferte Bibliothek nutzen können. In meiner Komponente habe ich verschiedene Importanweisungen wie import * as Progressbar from 'progressbar.js/dist' oder import { Progressbar } from 'progressbar.js/dist' ausprobiert, aber keine von ihnen zum Laufen gebracht.

Weiß jemand, wie ich diese Bibliothek benutzen kann?

Antwort

2

Da ProgressBar nicht als TypeScript-Klasse exportiert wird, können Sie die Anweisung import nicht verwenden, um sie in Ihre Komponente zu importieren.

Nachdem Sie die Datei progressbar.js in das Array scripts von angular-cli.json aufgenommen haben, reicht es aus, die folgende Zeile in die Komponenten einzufügen, in denen Sie sie verwenden müssen: declare var ProgressBar: any;. Diese Anweisung ist eine Problemumgehung, die die Verwendung von JavaScript-Bibliotheken von Drittanbietern in einer TypeScript-Klasse ermöglicht.

Beispiel app.component.js - einfach Drucken Sie das Objekt in der Konsole:

import { Component, OnInit } from '@angular/core'; 
declare var ProgressBar: any; 

@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'] 
}) 
export class AppComponent implements OnInit { 
    title = 'app works!'; 

    ngOnInit() { 
    console.log(ProgressBar); 
    } 
} 
+0

Dank. Ich habe es ausprobiert und es funktioniert ... Ich versuche gerade zu verstehen, wie ich herausfinden kann, welchen Variablennamen ich für eine Bibliothek festlegen möchte. Offensichtlich ist 'ProgressBar' in diesem Fall eine einfache Vermutung, aber ich bin mir sicher, dass es einen besseren Weg gibt, als zu raten ... War gerade durch einige Dateien in den 'node_modules', konnte aber eine offensichtliche Deklaration, Export, Konfiguration, ... finden. .. –

+0

@DanielLerps Normalerweise fügen diese JavasScript-Bibliotheken einen Verweis auf ein Objekt (ProgressBar in Ihrem Fall) entweder dem 'window' oder dem' global' Objekt hinzu. Wenn Sie die Datei progressbar.js öffnen, können Sie sehen, wie diese Referenz hinzugefügt wird, obwohl der Code nicht gut lesbar ist. –

Verwandte Themen