Mam plik JavaScript o nazwie, abc.js
który ma funkcję „public” o nazwie xyz()
. Chcę wywołać tę funkcję w moim projekcie Angular. W jaki sposób mogę to zrobić?
Mam plik JavaScript o nazwie, abc.js
który ma funkcję „public” o nazwie xyz()
. Chcę wywołać tę funkcję w moim projekcie Angular. W jaki sposób mogę to zrobić?
Odpowiedzi:
Skorzystaj ze skryptów znajdujących się w pliku angular-cli.json
(w angular.json
przypadku korzystania z angular 6+).
"scripts": [
"../path"
];
następnie dodaj typings.d.ts
(utwórz ten plik, src
jeśli jeszcze nie istnieje)
declare var variableName:any;
Zaimportuj go do swojego pliku jako
import * as variable from 'variableName';
plunker
do odtworzenia
Aby zawrzeć globalną bibliotekę, np. jquery.js
Plik w tablicy skryptów z angular-cli.json
( angular.json
przy używaniu angular 6+):
"scripts": [
"../node_modules/jquery/dist/jquery.js"
]
Następnie zrestartuj serwis, jeśli jest już uruchomiony.
declare var $: any;
Dodaj zewnętrzny plik js w index.html .
<script src="./assets/vendors/myjs.js"></script>
Oto plik 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||{})
Następnie zadeklaruj, że jest w komponencie jak poniżej
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>
Działa na mnie ...
declare
robi - zasadniczo „ declare
służy do poinformowania TypeScript, że zmienna została utworzona gdzie indziej ” (na podstawie tej odpowiedzi ).
Możesz albo
import * as abc from './abc';
abc.xyz();
lub
import { xyz } from './abc';
xyz()