2016-03-10 32 views
5

Ho un componente che utilizza una libreria javascript. Al momento mi sto solo usando system.js per caricare la dipendenzaComponente angolare2 caricamento file js esterno js

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

Tuttavia questo ritardo nella inizializzazione del componente sta causando un problema con un altro, consumando componente. In sostanza la funzione createControl è in esecuzione troppo tardi.

È possibile ritardare l'inizializzazione dell'intero componente con angolare finché tutte le dipendenze non vengono scaricate?

+0

Perché non caricare la dipendenza nei tag di script prima che venga caricato angolare? Lo faccio con alcune librerie, come js.cookie e lodash. Sono già caricati dal momento in cui l'angolare si avvia. – brando

+0

Sto cercando un approccio più modulare :) Potrei caricare tutte le dipendenze inizialmente sì, e anche se ci sono pro/contro su entrambi i lati, io personalmente mi sto appoggiando all'approccio modulare/componentistico. – Umair

+0

Hai percorsi nella tua app? – dfsq

risposta

0

E 'possibile ritardare l'inizializzazione di tutta la componente angolare fino a quando tutte le dipendenze vengono scaricati

Basta aggiungere il lib come una dipendenza sul file. Mettere questo sulla parte superiore del file che contiene il componente:

import * as lib from "lib" 

Questo effettivamente caricare prima gli stivali di applicazione "lib" in su.

+0

Questo non funziona. Ottenere un errore del compilatore dattiloscritto che non riesce a trovare il modulo "lib" – Umair

+0

Correzione: in 'vendor.d.ts' aggiungi' declare module "lib" {var foo: any; export = foo; } ' – basarat

Problemi correlati