2017-05-19 6 views
1

Ich habe eine externe js-Datei mit einer Reihe von jQuery-Methoden für die Benutzeroberfläche. Da der Angular-Router jedoch asynchron ist, werden Benutzeroberflächenelemente auf anderen Seiten vom Skript nicht ordnungsgemäß gerendert, da sie noch nicht im DOM vorhanden sind.Wie kann ich ein externes Skript in Angular erneut ausführen?

Früher habe ich einige Methoden aus dem Skript ausgewählt und sie zu einer Methode namens rerender hinzugefügt, aber das wird unübersichtlich.

Meine Frage war zu sehen, ob es eine Möglichkeit gibt, das gesamte Skript innerhalb der rerender Methode wieder zu laden und auszuführen?

Antwort

1

Sie können externe Skripts importieren. Verwenden Sie es in den Konstruktor:

constructor() { 
    System.import('script-loader!bower_components/fullcalendar/dist/fullcalendar.min.js').then(()=>{ 
     this.render(); // Do whatever, for demonstration I call a render() method 
    }) 
} 

Vergewissern Sie sich in Ihrem custom-typings Sie System erklärt haben:

declare let System: SystemJS; 

interface SystemJS { 
    import: (path?: string) => Promise<any>; 
} 

interface GlobalEnvironment { 
    SystemJS: SystemJS; 
    System: SystemJS; 
} 

Option 2:

Alternativ können Sie diese in Ihr Modul nach dem setzen Importanweisungen:

require('bootstrap/js/tooltip.js'); // For example 
+0

Ich verwende die Angular CLI, die nach meinem Wissen kein System verwendet, aber ich könnte falsch liegen. Können Sie dies mit Angular CLI überprüfen? – wilsonhobbs

+0

Es verwendet es. Ich habe auch Angular-CLI! : D – SrAxi

+0

Es scheint nicht zu funktionieren. Der Import wird ausgeführt, aber das Skript funktioniert nicht. – wilsonhobbs

Verwandte Themen