J'ai un fichier JavaScript appelé abc.js
qui a une fonction «publique» appelée xyz()
. Je souhaite appeler cette fonction dans mon projet Angular. Comment je fais ça?
J'ai un fichier JavaScript appelé abc.js
qui a une fonction «publique» appelée xyz()
. Je souhaite appeler cette fonction dans mon projet Angular. Comment je fais ça?
Réponses:
Reportez-vous aux scripts dans le fichier angular-cli.json
( angular.json
lors de l'utilisation d'angular 6+).
"scripts": [
"../path"
];
puis ajoutez typings.d.ts
(créez ce fichier src
s'il n'existe pas déjà)
declare var variableName:any;
Importez-le dans votre fichier comme
import * as variable from 'variableName';
plunker
pour reproduire
Pour inclure une bibliothèque globale, par exemple un jquery.js
fichier dans le tableau de scripts de angular-cli.json
( angular.json
lors de l'utilisation d'angular 6+):
"scripts": [
"../node_modules/jquery/dist/jquery.js"
]
Après cela, redémarrez ng serve s'il est déjà démarré.
declare var $: any;
Ajoutez un fichier js externe dans index.html .
<script src="./assets/vendors/myjs.js"></script>
Voici le fichier 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||{})
Ensuite, déclarez qu'il est dans le composant comme ci-dessous
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>
Ça marche pour moi ...
declare
fait - essentiellement " declare
est utilisé pour dire à TypeScript que la variable a été créée ailleurs " (à partir de cette réponse ).
Tu peux soit
import * as abc from './abc';
abc.xyz();
ou
import { xyz } from './abc';
xyz()