У мене є JavaScript-файл, abc.js
який має функцію "public" xyz()
. Я хочу назвати цю функцію у своєму проекті Angular. Як це зробити?
У мене є JavaScript-файл, abc.js
який має функцію "public" xyz()
. Я хочу назвати цю функцію у своєму проекті Angular. Як це зробити?
Відповіді:
Перегляньте сценарії всередині файлу angular-cli.json
( angular.json
при використанні кутового 6+).
"scripts": [
"../path"
];
потім додайте typings.d.ts
(створіть цей файл, src
якщо він ще не існує)
declare var variableName:any;
Імпортуйте його у свій файл як
import * as variable from 'variableName';
plunker
для відтворення
Для того, щоб включити глобальну бібліотеку, наприклад, jquery.js
файл у масив скриптів з angular-cli.json
( angular.json
при використанні кутових 6+):
"scripts": [
"../node_modules/jquery/dist/jquery.js"
]
Після цього перезапустіть службу, якщо вона вже запущена.
declare var $: any;
Додайте зовнішній js-файл у index.html .
<script src="./assets/vendors/myjs.js"></script>
Ось файл 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||{})
Потім заявіть, що це в такому компоненті, як нижче
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>
Це працює для мене ...
declare
робить - по суті " declare
використовується для того, щоб повідомити TypeScript, що змінна була створена в іншому місці " (з цієї відповіді ).
Ви можете будь-який
import * as abc from './abc';
abc.xyz();
або
import { xyz } from './abc';
xyz()