2016-02-23 18 views
6

Czy istnieje sposób uwzględnienia skryptów JS stron trzecich w komponencie Angular2 zamiast włączania go do pliku index.html?angular2: w tym skrypty jsparty w komponencie

Mam składnik tabeli, który opakowuje zbiory danych. Jest to jedyny komponent, który musi zawierać zestaw danych js/css. Byłoby miło, gdybym mógł zachować mój index.html czystszy. Dekorator komponentów pozwala ci określić pliki css.

Próbowałem przenieść moje tagi skryptów wewnątrz mojego komponentu html, ale to nie działa.

+0

tak można załadować trzeciej partii 'css' w wymaganym składnikiem tylko w styleUrls. Nie wiem o plikach .js ' –

+0

dup z http://stackoverflow.com/questions/34140065/script-tag-in-angular2-template-hook-when-template-dom-is-loaded –

+0

Czy brałeś pod uwagę PrimeNG DataTable, jest to komponent natywny. http://www.primefaces.org/primeng/#/datatable –

Odpowiedz

10

Tagi skryptów w szablonach komponentów są usuwane. Rozwiązaniem jest utworzenie znacznika script dynamicznie ngAfterViewInit()

Zobacz także https://github.com/angular/angular/issues/4903

import { DOCUMENT } from '@angular/common'; 
... 

constructor(private @Inject(DOCUMENT) document, 
      private elementRef:ElementRef) {}; 

ngAfterViewInit() { 
    var s = this.document.createElement("script"); 
    s.type = "text/javascript"; 
    s.src = "http://somedomain.com/somescript"; 
    this.elementRef.nativeElement.appendChild(s); 
} 

Zobacz także https://stackoverflow.com/a/9413803/217408

+0

to nie wydaje się działać poprawnie kątowe rzuty błąd "this.elementRef.nativeElement.append nie jest funkcją"? czemu ? –

+0

@PardeepJain Domyślam się, że poprawna nazwa funkcji to 'appendChild (s)' w JS/TS. W Dart to 'append (s)' i pomieszałem to. –

+0

Otrzymałem ref przez: document.getElementById zamiast tego. Skrypty ładują się, ale kod js, który potrzebuje tych skryptów, nie działa poprawnie przy początkowym załadowaniu (po odświeżeniu działa). Naprawdę, nie sądzę, żeby to było rozwiązanie, nawet gdyby zadziałało. Moje pytania dotyczyły tego, czy istnieje czysty/standardowy "kątowy" sposób uwzględniania zależności js tylko w komponentach, które ich potrzebują. – dvulanov