AngularにJavaScriptスクリプトファイルを含め、そのスクリプトから関数を呼び出すにはどうすればよいですか?


119

と呼ばれるabc.js「パブリック」関数を持つJavaScriptファイルがありますxyz()。Angularプロジェクトでその関数を呼び出したいのですが。それ、どうやったら出来るの?

回答:


105

angular-cli.jsonangular.jsonAngle 6+を使用する場合)ファイル内のスクリプトを参照してください。

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

次に追加しますtypings.d.tssrcまだ存在しない場合は、このファイルを作成します)

declare var variableName:any;

ファイルにインポートする

import * as variable from 'variableName';

9
スクリプトにパスを「scripts」として追加しました:["./assets/common_header_sidebar.js"]; 次に、typing.d.tsで、var commonHeader:anyを宣言します。次に、tsファイルにimport *を 'commonHeader'からcommonHeaderModuleとして記述しました。しかし、「モジュール 'commonHeader'が見つかりません」と表示されます。エラー
Piyush Jain 2017年

6
これを尋ねるとばかげて聞こえるかもしれません。しかし、パス内のファイル名(angular-cli.jsonで宣言)と、typing.d.tsファイルでオブジェクトの名前を宣言する方法はどのように関連していますか。ファイルではなく宣言されたオブジェクトの名前からインポートしているため
Piyush Jain

2
plunker再現するために作成できますか
Aravind 2017年

2
統合が完了したら、それを使用しているtsファイルで関数を宣言する必要があり、インポートは必要ありませんでした。トンありがとう。
Piyush Jain 2017年

2
@Aravind Angular 4プロジェクトにtyping.d.tsファイルがない場合はどうなりますか?
Habib 2018

33

グローバルライブラリを含めるには、たとえばjquery.js、スクリプト配列内のファイルangular-cli.jsonangular.json角度6+を使用する場合):

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

この後、ng serveが既に起動している場合は再起動します。


3
typescriptファイルにどのようにインポートしますか?
alansiqueira27

1
tsファイルにインポートする方法declare var $: any;
ojus kulkarni

3
Angularのバージョン6以降では、angular-cli.jsonファイルの名前が変更され、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>

それは私のために働いています...


非常に徹底的な例のおかげで、angular 6ではうまくいきました。他の答えはどれもうまくいきませんでした。
Daniel Filipe

FWIWは、ここで何をいくつか説明しているdeclare基本的に、「 - declare変数が他の場所で作成されていることを活字体に伝えるために使用されている(から」この答えが)。
ルフィン

18

あなたはどちらか

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

または

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

26
ファイルがどこかでホストされているが、ローカルリポジトリではない場合、どうすればよいですか?
Piyush Jain 2017年

あなたはこれを理解しましたか?
Luis Aceituno

両方の方法でエラーが発生します。プロジェクトに.jsファイルがありますが、最初の方法でインポートすると、コンパイル時にエラーが発生し、2番目の方法を使用するとモジュールが見つかりません。そして、私は滑らかなスライダーを使っています。
Habib
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.