2017-09-27 1 views
2

Ich habe Angular 2 mit AdminLTE verwendet, die einige Skripts zum Laden ordnungsgemäß ausgeführt werden muss. So habe ich sie in meiner .anglular-cli.json hinzugefügt:Laden von Skripten über alle Komponenten in Angular 2

"scripts": [ 
    "../node_modules/jquery/dist/jquery.min.js", 
    "../node_modules/bootstrap/dist/js/bootstrap.min.js", 
    "../node_modules/admin-lte/dist/js/adminlte.min.js", 
    "../node_modules/moment/min/moment.min.js" 
], 

Leider ist dies nicht alle Zeit funktioniert. Die Seite wird beim ersten Mal geladen, aber wenn ich eine andere Seite route, werden die Skripts für die Komponentenvorlage nicht neu geladen.

Ich konnte keine Informationen darüber finden, was für mich sehr überraschend ist, da ich dachte, es wäre ein allgemeines Problem! Ich könnte damit völlig verloren sein!

+0

Sie könnten einige Skripte verwenden, die sie überschreiben –

+0

Ich fürchte, ich verwende kein anderes Skript überhaupt – m33n

Antwort

1

Sie können Ihre Script-Elemente in DOM jedes Mal, die Sie benötigen, wie diese entfernen und neu erstellen:

document.getElementById("myScript").remove(); 
var testScript = document.createElement("script"); 
testScript.setAttribute("id", "myScript"); 
testScript.setAttribute("src", "assets/js/script.js"); 
document.body.appendChild(myScript); 

Ich stellte eine Frage in GitHub, wo ich erklären, wie es zu tun.

2

Eine einfache Lösung, die ich gefunden habe, war nur eine window.location.href = '...' zu dem Link hinzuzufügen, den Sie nach dem Login öffnen. Heres meine Funktion für die, wenn der Login-Button geklickt wird.

this.authService.authenticateMember(member).subscribe(data => { 
    if (data.success) { 
     ... 
     window.location.href = '/' 
     ... 
    } else { 
     ... 
    } 
} 

Also, wenn Sie Authentifizierung nicht verwenden, dann können Sie am Ende Ihrer Login Erfolgsantwort, die über Code setzen und es wird die Seite neu geladen aswell den Benutzer in Anspruch nehmen, wo sie nach einer erfolgreichen Anmeldung werden.

Dies ist nicht die beste Lösung, aber es ist die einfachste, die ich denke, dass dosent zu viele Änderungen erfordern. Hoffe, es hilft :)

+0

Das ist eine sehr interessante Lösung! – m33n

Verwandte Themen