angular 6アプリケーションにjsファイルを使用しようとしています。実行した手順は次のとおりです。
1。作成されたtestfile.js
ファイル:
var testa = function () { function testMethod() { console.log('hello'); } } var testmodule = new testa(); module.exports = testmodule;
2。 angular.cli.json
内。テスト目的では、tesfile.jsはangular.cli.json
と同じ場所にあります:
"scripts": [ "testfile.js" ],
3。 typings.d.tsファイルで、それを宣言しました:
declare var testmodule: any;
4。 tsファイルで、それを次のように使用しようとしました:
public ngOnInit() { testmodule.testMethod() }
しかし、angularコンポーネントが使用されている場合、コンソールの警告は次のようになります。
Uncaught ReferenceError: testmodule is not defined
.tsファイル内のjsファイルを次のようにインポートするなど、別の方法を試しました。
import * as mymodule '../../testfile.js'
"allowJs": true
ですが、これもtestmoduleまたはtestfileを識別していません。ここで何が悪いのですか?
私はデモを作成しました: https://codesandbox.io/s/4jw6rk1j1x のように:
testfile.js
function testa() {}
testa.prototype.testMethod = function testMethod() {
console.log("hello");
};
var testmodule = new testa();
export { testmodule };
そしてmain.ts
import { enableProdMode } from "@angular/core";
import { platformBrowserDynamic } from "@angular/platform-browser-dynamic";
import { AppModule } from "./app/app.module";
import { environment } from "./environments/environment";
import { testmodule } from "./testfile";
testmodule.testMethod();
if (environment.production) {
enableProdMode();
}
platformBrowserDynamic()
.bootstrapModule(AppModule)
.catch(err => console.log(err));
コンソールのタブに「こんにちは」というテキストが表示されます
testfile.js
に変更を加えたことに注意してください
Angular-cli.jsonファイル内のスクリプトへの参照を提供します。
"scripts": [
"../path_of_script"
];
次にtypings.d.tsを追加します
declare var testModule : any;
使いたいところにインポート
import * as myModule from 'testModule';
angular.jsonに外部JSをインポートできます
"scripts": [ "node_modules/jquery/dist/jquery.min.js", "node_modules/popper.js/dist/umd/popper.min.js", "node_modules/bootstrap/dist/js/bootstrap.min.js", "../../../assets/js/counter" ]
特定のhtmlコンポーネントのJSファイルをインポートする場合は、importyourComponent.tsにjsファイルを含めることができます
ジャストライク:
import { Component, OnInit } from '@angular/core';
import "../../../assets/js/counter";
特定のHTMLページにcounter.jsをインポートしたことがわかります。
この行の "../../../ assets/js/counter" counterはjsファイル名です。ファイル名の後に。jsを追加する必要はありません。
パスを慎重に設定してください../../ ..
すべての外部jsファイルをassets/jsフォルダーに保存できます。そして、特定のjsファイルを特定のcomponent.tsにインポートできます。
これは私にとってangular 6。