When I was using Angular2 pre-releases I had to use systemjs
in order to use external javascript libraries, namely ESRI ArcGIS JavaScript API, which is based on AMD modules (typings are available though).
Now I would like to migrate to Angular2 CLI. However, I fail to see how I can import an external library like arcgis after Angular2 moved from systemjs
to webpack
and without having a webpack.config
file to modify.
The external library is stored under:
<script src="https://js.arcgis.com/3.19/"></script>
Example: In my angular components, I somehow need to be able to import these like:
import map from 'esri/map';
to import 'https://js.arcgis.com/3.19/esri/map.js'
Any idea how this can be accomplished?
Edit: If I add the link to the map.js to the angular-cli.json
"scripts": [ "../node_modules/jquery/dist/jquery.js", .... "https://js.arcgis.com/3.19/esri/map.js" ],
and import it as import {map} from 'esri/map';
I'm getting a webpackMissingModule: C:\Users\xy\project\src\https:\js.arcgis.com\3.19\esri\map.js
3 Answers
Answers 1
the sample angular-cli.json
for including external libraries sorry for dump data but this is a hint as you can see i added scripts and css in styles
and scripts
and addons
array in angular-cli.json
{ "project": { "version": "1.0.0-beta.19-3", "name": "adm" }, "apps": [ { "root": "src", "outDir": "dist", "assets": [ "assets", "favicon.ico" ], "index": "index.html", "main": "main.ts", "test": "test.ts", "tsconfig": "tsconfig.json", "prefix": "app", "mobile": false, "styles": [ "assets/lib/bootstrap/css/bootstrap.css", "../node_modules/font-awesome/css/font-awesome.css", "assets/lib/metismenu/metisMenu.css", "assets/lib/animate.css/animate.css", "assets/css/customradiocss.css", "rainbow/blackboard.css" ], "scripts": [ "assets/lib/jquery/jquery.js", "assets/lib/bootstrap/js/bootstrap.js", "assets/lib/metismenu/metisMenu.js", "assets/lib/screenfull/screenfull.js", "assets/js/core.js", "assets/js/app.js", "assets/js/easyResponsiveTabs.js", "rainbow/rainbow-custom.min.js" ], "environments": { "source": "environments/environment.ts", "dev": "environments/environment.ts", "prod": "environments/environment.prod.ts" } } ], "addons": ["../node_modules/font-awesome/fonts/*.+(otf|eot|svg|ttf|woff|woff2)"], "packages": [], "e2e": { "protractor": { "config": "./protractor.conf.js" } }, "test": { "karma": { "config": "./karma.conf.js" } }, "defaults": { "styleExt": "css", "prefixInterfaces": false, "inline": { "style": false, "template": false }, "spec": { "class": false, "component": true, "directive": true, "module": false, "pipe": true, "service": true } } }
Answers 2
You can do this in one of two ways:
Import the script inside your index.html, then in your component, declare the API entry point as a constant:
const argGIS: any;
Then use it as any other place you have used it. You will have no intelli-sense support but it will work.
Use a npm module, it looks like one exists. Install it with:
npm install arcgis --save
Add it to your "scripts" in angular-cli.json
"../node_modules/arcgis/file.js"
Look at the index.d.ts file to find what to import and import it in your component with:
import {Something} from 'arcgis';
Answers 3
An option would be, to import it in the main index html-file.
0 comments:
Post a Comment