Angular에 JavaScript 스크립트 파일을 포함하고 해당 스크립트에서 함수를 호출하려면 어떻게해야합니까?


119

라는 abc.js'공용'함수 가있는 JavaScript 파일 이 있습니다 xyz(). 내 Angular 프로젝트에서 해당 함수를 호출하고 싶습니다. 어떻게하나요?

답변:


105

angular-cli.json( angular.jsonangular 6+를 사용 하는 경우) 파일 내부의 스크립트를 참조하십시오 .

"scripts": [
    "../path" 
 ];

그런 다음 추가하십시오 typings.d.ts( src아직 존재하지 않는 경우이 파일을 작성하십시오 ).

declare var variableName:any;

파일에서 다음으로 가져 오기

import * as variable from 'variableName';

9
스크립트에 경로를 "스크립트"로 추가했습니다. [ "./assets/common_header_sidebar.js"]; 그런 다음 typing.d.ts에서 선언 var commonHeader : any를 작성했습니다. 그리고 내 ts 파일에서 import * as commonHeaderModule from 'commonHeader'; 그러나 " 'commonHeader'모듈을 찾을 수 없습니다." 오류
Piyush 자이나교

6
이 질문에 대해 어리석게 들릴 수도 있습니다. 그러나 경로의 파일 이름 (angular-cli.json에 선언 됨)과 typing.d.ts 파일의 객체 이름 선언은 관련이 있습니다. 내가 선언 된 객체가 아닌 파일의 이름에서 가져 오기를하고 있기 때문에
Piyush 자이나교

2
당신은을 만들 수 있습니다 plunker재현
라빈

2
통합이 완료되면 내가 그것을 사용하고 있고 가져 오기가 필요하지 않은 내 ts 파일에서 함수를 선언해야했습니다. 정말 감사합니다 .
Piyush 자이나교

2
@Aravind Angular 4 프로젝트에 typing.d.ts 파일이 없으면 어떻게해야합니까?
Habib

33

글로벌 라이브러리, 예를 들면 포함하기 위해 jquery.js에서 스크립트 배열의 파일 angular-cli.json( angular.json6 + 각도 사용하는 경우)를 :

"scripts": [
  "../node_modules/jquery/dist/jquery.js"
]

그런 다음 이미 시작된 경우 ng serve를 다시 시작하십시오.


3
typescript 파일에서 어떻게 가져 옵니까?
alansiqueira27

1
TS 파일 사용 수입에 -declare var $: any;
ojus kulkarni

3
angular-cli.json 파일은 Angular 버전 6+에서 angular.json으로 이름이 바뀌거나 대체되었습니다.
Ε Г И І И О

22

index.html에 외부 js 파일을 추가합니다 .

<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>

그것은 나를 위해 일하고 있습니다 ...


매우 철저한 예 덕분에 각도 6에서 저에게 효과적이었습니다. 다른 답변은 효과가 없었습니다.
Daniel Filipe

Fwiw, 여기에 무엇을 declare수행 하는지에 대한 설명이 있습니다. 본질적으로 " declare변수가 다른 곳에서 생성되었음을 TypeScript에 알리는 데 사용됩니다 "( 이 답변에서 ).
ruffin

18

당신은

import * as abc from './abc';
abc.xyz();

또는

import { xyz } from './abc';
xyz()

26
파일이 로컬 저장소가 아닌 어딘가에 호스팅 될 때 어떻게해야합니까?
Piyush 자이나교

이걸 알아 냈어?
Luis Aceituno

두 방법 모두에서 오류가 발생합니다. 내 프로젝트에 .js 파일이 있지만 첫 번째 방법으로 가져올 때 컴파일 오류가 발생하고 두 번째 방법을 사용할 때 모듈을 찾을 수 없습니다. 그리고 저는 매끄러운 슬라이더를 사용하고 있습니다.
Habib
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.