Ich habe eine Datei, die Dutzende Javascript-Funktionen haben. Ich möchte diese Datei in die Komponente Angular 2 importieren und die Funktion init() ausführen, die in der Datei "external.js" definiert ist.Aufruf von reinem JavaScript-Funktion von Angular 2 Komponente
import { Component, AfterViewInit } from '@angular/core';
import "../../../../assets/external.js";
@Component({
selector: 'app-component',
templateUrl: 'app.component.html'
})
export class ComponentNameComponent implements AfterViewInit {
constructor() { }
ngAfterViewInit(): void {
// invoke init() function from external.js file
}
}
external.js geladen Import mit und in ngAfterViewInit() Ich möchte init() Funktion aufzurufen, die in external.js ist, die alle anderen Methoden in dieser externen Datei aufruft.
Hier ist ein Teil external.js:
function init() {
callFunction1();
callFunction2();
}
Ich folgte Ihrem Beispiel. Ich habe 'var webGlObject = (function() { return { init: function() { init(); } } }) (webGlObject || {}) ' und in ngAfterViewInit() versucht, mit 'webGlObject.init() zuzugreifen;' aber ich erhalte Fehler 'errors.service.ts: 29 ReferenceError: webGlObject ist nicht definiert ' –
Ich habe Plunker mit Ihrem webGlObject aktualisiert und es funktioniert. Ich habe nur geändert, dass Sie init() in der Init-Funktion aufrufen. – hakany
Wenn Sie immer noch einen Fehler erhalten, können Sie weitere Informationen bereitstellen oder in zum Beispiel in Plunker, Jfiddle oder etwas anderes erstellen? – hakany