Tengo un archivo JavaScript llamado abc.jsque tiene una función 'pública' llamada xyz(). Quiero llamar a esa función en mi proyecto Angular. ¿Cómo puedo hacer eso?
Tengo un archivo JavaScript llamado abc.jsque tiene una función 'pública' llamada xyz(). Quiero llamar a esa función en mi proyecto Angular. ¿Cómo puedo hacer eso?
Respuestas:
Consulte los scripts dentro del archivo angular-cli.json( angular.jsoncuando use angular 6+).
"scripts": [
"../path"
];
luego agrega typings.d.ts (cree este archivo srcsi aún no existe)
declare var variableName:any;
Importarlo en su archivo como
import * as variable from 'variableName';
plunkerpara reproducir
Para incluir una biblioteca global, por ejemplo, un jquery.jsarchivo en la matriz de scripts de angular-cli.json( angular.jsoncuando se usa angular 6+):
"scripts": [
"../node_modules/jquery/dist/jquery.js"
]
Después de esto, reinicie ng serve si ya se inició.
declare var $: any;
Agregue un archivo js externo en index.html .
<script src="./assets/vendors/myjs.js"></script>
Aquí está el archivo 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||{})
Luego declare que está en un componente como el siguiente
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>
Me está funcionando ...
declarehace , esencialmente " declarese usa para decirle a TypeScript que la variable se ha creado en otro lugar " (de esta respuesta ).
Tu también puedes
import * as abc from './abc';
abc.xyz();
o
import { xyz } from './abc';
xyz()