2016-03-10 14 views
5

Mam składnik, który korzysta z biblioteki javascript. W tej chwili jestem po prostu za pomocą system.js załadować zależnośćAngular2 ładowanie komponentu zewnętrznego pliku js lib

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

Jednak to opóźnienie inicjalizacji komponentu powoduje problem z innym, zużywając komponent. Zasadniczo funkcja createControl działa za późno.

Czy możliwe jest opóźnienie inicjalizacji całego komponentu o kąt, dopóki nie zostaną pobrane wszystkie zależności?

+0

Dlaczego nie załadować zależności w znacznikach skryptu przed załadowaniem kąta? Robię to z kilkoma bibliotekami, takimi jak js.cookie i lodash. Są już załadowane przez czas, w którym kąt zaczyna działać. – brando

+0

Poszukuję bardziej modularnego podejścia :) Mogłem załadować wszystkie zależności na początku tak, i chociaż są pro/cons po obu stronach, osobiście pochylam się nad podejściem modułowym/komponentowym. – Umair

+0

Czy masz trasy w swojej aplikacji? – dfsq

Odpowiedz

0

Czy możliwe jest opóźnienie inicjalizacji całego komponentu z kanciasty aż wszystkie zależności są pobierane

Wystarczy dodać lib jako zależność od pliku. Umieścić to na początku pliku, który zawiera składnik:

import * as lib from "lib" 

To będzie skutecznie Load „lib” przed buty aplikacji w górę.

+0

To nie działa. Pobieranie błędu kompilatora maszynopisu, który nie może znaleźć modułu "lib" – Umair

+0

Poprawka: w 'vendor.dtsts' dodaj' declare module "lib" {var foo: any; export = foo; } ' – basarat

Powiązane problemy