2017-09-13 1 views
0

Ich möchte ein Skript dynamisch in Angular laden 4. Der Name für das Skript selbst wird später von einem Ajax Call sein. Um die JavaScript-Datei zu laden, habe ich Jquery in mein Angular Project importiert. Danach benutze ich die GetScript Methode und die Datei geladen werden kann, aber wenn ich möchte eine Funktion wie folgt aufgerufen:Laden Javascript Scripts dynamisch in Angular 4

import { Component } from '@angular/core'; 
import * as jQuery from 'jquery'; 

declare var $:any; 
declare var jquery:any; 

@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'] 
}) 
export class AppComponent { 

    title = 'angular 4 with jquery'; 
    url = "currently hardcoded"; 

    getScript42(){ 
     $.getScript(this.url).done(function() { 
     logger(); 
    }); 
    } 
    } 

ich die folgende Fehlermeldung erhalten: Kann nicht Namen ‚Logger‘ gefunden

Aber in meinem JavaScript-Datei Die Funktion ist definiert:

Wenn ich keine Funktion für dieses verwenden, funktionierte es.

Also jetzt zu meinem Problem kennen Sie eine Möglichkeit, diese Datei zu laden und eine bestimmte Funktion aufzurufen?

+0

Hallo @Henry Sachs Beliebige HTML-Vorlage Referenzen? –

+0

Aus welchem ​​Grund fragen Sie? Ich habe einen Knopf mit einer Onclick-Methode. –

+0

kein grund ich nicht :)!, Ich habe nur gefragt: \t Hallo Any html Vorlage Referenzen? –

Antwort

0

Im eckigen Lebenszyklus wird AfterViewInit aufgerufen, wenn die Ansicht geladen ist. Das bedeutet, dass Ihr HTML dom-bereit und bereit ist, weitere Skript-Tags zu akzeptieren.

so können Sie diese in Ihrer Afterviewinit-Methode schreiben, indem Sie die Schnittstelle implementieren.

+0

Ich habe nicht die Möglichkeit, dies derzeit zu versuchen, aber werde darauf zurückkommen. –

+0

so funktioniert das immer noch nicht für mich und ich bekomme die gleichen Fehler, dass er den Namen Logger nicht finden kann. –

Verwandte Themen