2016-03-10 3 views
5

Ich habe eine Komponente, die eine Javascript-Bibliothek verwendet. Im Moment bin ich mit nur system.js der AbhängigkeitAngular2 Komponente Laden externe js Lib-Datei

public ngOnInit() { 
    System.import('lib').then(() => this.createControl()); 
} 

jedoch diese Verzögerung bei der Initialisierung der Komponente zu laden, wird ein Problem mit einem anderen verursacht, verbrauchenden Komponente. Im Wesentlichen läuft die createControl Funktion zu spät.

Ist es möglich, die Initialisierung der gesamten Komponente mit Winkel zu verzögern, bis alle Abhängigkeiten heruntergeladen sind?

+0

Warum laden Sie nicht die Abhängigkeit in den Skript-Tags, bevor angular geladen wird? Ich mache das mit ein paar Bibliotheken, wie js.cookie und lodash. Sie sind bereits geladen, wenn die Zeit angreift. – brando

+0

Ich bin auf der Suche nach einem modularen Ansatz :) Ich könnte alle Abhängigkeiten zunächst ja laden, und obwohl es pro/Nachteile auf beiden Seiten gibt, stütze ich mich persönlich auf den modularen/komponenten Ansatz. – Umair

+0

Haben Sie Routen in Ihrer App? – dfsq

Antwort

0

Ist es möglich, mit Winkel Initialisierung des gesamten Bauteils zu verzögern, bis alle Abhängigkeiten hinzufügen heruntergeladen werden

einfach die lib als eine Abhängigkeit auf die Datei. Setzen Sie diese auf der Oberseite der Datei, die die Komponente enthält:

import * as lib from "lib" 

Dies wird wirksam laden „lib“ vor die Anwendung bootet.

+0

Dies funktioniert nicht. Fehler beim Typoskript-Compiler, dass das Modul "lib" nicht gefunden werden kann. – Umair

+0

Behebung: in 'vendor.d.ts' add' deklarieren Modul "lib" {var foo: any; export = foo; } ' – basarat