我正在尝试在 Angular 2 中创建一个组件。该组件有一个变量title
,其值显示在模板的一部分中:
import { Component, ViewChild } from '@angular/core';
import { bootstrap } from '@angular/platform-browser-dynamic';
declare var ol: any;
@Component({
selector: 'map',
template: `
<div id="container">
<nav class="navbar navbar-default navbar-static-top">
<div class="container">
<div class="navbar-header">
<strong class="navbar-brand">{{title}}</strong>
</div>
</div>
</nav>
<div id="down" #mapa style="max-height : 500px;">
</div>
</div>
`
})
class MapaComponent {
@ViewChild('mapa') mapa;
map : any;
title : string = 'Mi mapa';
/* Contructor */
constructor() {}
ngAfterViewInit() {
this.map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
target: this.mapa.nativeElement,
view: new ol.View({...})
})
}
}
bootstrap(MapaComponent, []); // Component is bootstrapped!
我想要做的是为创建的每个组件修改所述变量的值,我想知道是否可以通过Component
以下方式将所述变量的值声明为属性来以某种方式完成:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Mapa</title>
<script src="node_modules/es6-shim/es6-shim.min.js"></script>
<script src="node_modules/zone.js/dist/zone.js"></script>
<script src="node_modules/reflect-metadata/Reflect.js"></script>
<script src="node_modules/systemjs/dist/system.js"></script>
<script src="node_modules/rxjs/bundles/Rx.js"></script>
<script src="systemjs.config.js"></script>
<script src="http://openlayers.org/en/v3.12.1/build/ol.js"></script>
<script>
System.import ('built/map')
.then(null, console.error.bind(console));
</script>
</head>
<body>
<!-- Componente creado -->
<map title = "Mapa A"></map>
<link rel="stylesheet" type="text/css" href="node_modules/bootstrap/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="http://openlayers.org/en/v3.12.1/css/ol.css" type="text/css">
</body>
</html>
是否可以通过这种方式修改title变量的值?
您必须使用以下类 ElementRef 并使用它。
索引.html
角度.ts
您应该只将其与启动应用程序的“组件”一起使用,因为如果您在上面放置的方法有效,则 ElementRef 类可能会导致您的 Web 应用程序出现安全问题,请查看以下链接以获取更多信息。
链接 API 角度 2
问题文档
您可以做的另一个解决方案是创建一个子组件,从而避免使用不安全的类。
index.html(没有太多变化)
start.ts(我们将新组件称为 MapasComponent )
app/src/frame.html(我们将选项发送给子组件)
maps.ts(这里我们创建地图组件,使用“inputs”参数发送数据)
app/src/maps.html(我们打印选项)
干杯!