【发布时间】:2018-03-21 23:19:30
【问题描述】:
我目前正在尝试将自己读入 Angular 4。对于一个项目,我需要在 Angular 应用程序中使用“HERE Maps”显示地图。 但是我不知道如何在导入脚本的同时保持对组件中类的访问。
我正在尝试按照此处的说明进行操作: https://developer.here.com/documentation/maps/topics/quick-start.html
我尝试将 .js 脚本添加到 index.html,如下所示:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>See720</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<script src="http://js.api.here.com/v3/3.0/mapsjs-core.js" type="text/javascript" charset="utf-8"></script>
<script src="http://js.api.here.com/v3/3.0/mapsjs-service.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
var platform = new H.service.Platform({
'app_id': '****',
'app_code': '****',
useCIT: true
});
</script>
</head>
<body>
<app-root></app-root>
</body>
</html>
我试图以某种方式将 .js 文件注入到组件或服务中,以便使用 .js 文件中包含的类。但我无法让它工作。
我希望把这部分:
var platform = new H.service.Platform({
'app_id': '****',
'app_code': '****',
useCIT: true
});
... 以某种方式进入 OnInit() 方法。但是“H”对象永远不会被识别。使用平面旧 JavaScript 和 Html 我可以让它工作。
在 Angular 4 中导入此类 JavaScript 文件的正确方法是什么?如何访问其类和方法?
更新
我的代码目前如下所示: 模板:
<div style="text-align:center">
<!--<div><font color="white">This is some text!</font></div>-->
<div id="mapContainer" style="width: 900px; height: 600px"></div>
</div>
组件:
import {AfterViewInit, Component} from '@angular/core';
declare var H: any;
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements AfterViewInit {
title = 'C720';
ngAfterViewInit() {
// Initialize the platform object:
let platform = new H.service.Platform({
'app_id': '****',
'app_code': '****',
useCIT: true
});
// Obtain the default map types from the platform object
let defaultLayers = platform.createDefaultLayers();
// Instantiate (and display) a map object:
let map = new H.Map(
document.getElementById('mapContainer'),
defaultLayers.normal.map,
{
zoom: 5,
center: { lat: 52.5, lng: 13.5 }
}
);
}
}
index.html:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>See720</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<script src="http://js.api.here.com/v3/3.0/mapsjs-core.js" type="text/javascript" charset="utf-8"></script>
<script src="http://js.api.here.com/v3/3.0/mapsjs-service.js" type="text/javascript" charset="utf-8"></script>
<script src="http://js.api.here.com/v3/3.0/mapsjs-mapevents.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<app-root></app-root>
</body>
</html>
地图正在显示,但现在我需要添加一个事件监听器,但无法识别第三个包(“mapjs-mapevents.js”)中的 H.mapevent 类。
我如何告诉 Angular 在第三个脚本中查找其他类?
【问题讨论】:
-
感谢@mutantkeyboard 的链接。我在上面更新了我的问题。如何从另一个脚本访问同一对象上的类?
-
如果您使用的是 Angular CLI,请使用
scripts: stackoverflow.com/questions/38855891/…
标签: javascript angular dependency-injection