Ho un file JavaScript chiamato abc.js
che ha una funzione "pubblica" chiamata xyz()
. Voglio chiamare quella funzione nel mio progetto Angular. Come lo faccio?
Ho un file JavaScript chiamato abc.js
che ha una funzione "pubblica" chiamata xyz()
. Voglio chiamare quella funzione nel mio progetto Angular. Come lo faccio?
Risposte:
Fare riferimento agli script all'interno del file angular-cli.json
( angular.json
quando si utilizza angular 6+).
"scripts": [
"../path"
];
quindi aggiungi typings.d.ts
(crea questo file src
se non esiste già)
declare var variableName:any;
Importalo nel tuo file come
import * as variable from 'variableName';
plunker
da riprodurre
Per includere una libreria globale, ad esempio un jquery.js
file nell'array degli script da angular-cli.json
( angular.json
quando si utilizza angular 6+):
"scripts": [
"../node_modules/jquery/dist/jquery.js"
]
Dopodiché, riavvia ng serve se è già avviato.
declare var $: any;
Aggiungi il file js esterno in index.html .
<script src="./assets/vendors/myjs.js"></script>
Ecco il file myjs.js :
var myExtObject = (function() {
return {
func1: function() {
alert('function 1 called');
},
func2: function() {
alert('function 2 called');
}
}
})(myExtObject||{})
var webGlObject = (function() {
return {
init: function() {
alert('webGlObject initialized');
}
}
})(webGlObject||{})
Quindi dichiara che è in un componente come di seguito
demo.component.ts
declare var myExtObject: any;
declare var webGlObject: any;
constructor(){
webGlObject.init();
}
callFunction1() {
myExtObject.func1();
}
callFunction2() {
myExtObject.func2();
}
demo.component.html
<div>
<p>click below buttons for function call</p>
<button (click)="callFunction1()">Call Function 1</button>
<button (click)="callFunction2()">Call Function 2</button>
</div>
Sta funzionando per me ...
declare
fa - essenzialmente " declare
è usato per dire a TypeScript che la variabile è stata creata altrove " (da questa risposta ).
Puoi anche tu
import * as abc from './abc';
abc.xyz();
o
import { xyz } from './abc';
xyz()