将值传递给另一个组件
Passing values to another component
所以我在 angular 中有这个程序,到目前为止我从用户那里获取邮政编码并单击按钮,它将输入发送到一个函数,然后发送到 api 转换为纬度和经度坐标。见下文:
home.component.html
<div class="center" style="margin-top:50px;">
<label for="ZipCode"><b>Zip Code</b></label>
</div>
<div class="center">
<input name="zipcode" #zipcode id="zipcode" type="text" placeholder="Enter Zip Code" maxlength="5">
</div>
<div class="center" style="margin-top:100px;">
<button class="button button1" (click)="getCoords(zipcode.value)" ><b>Retrieve Data</b></button>
</div>
很明显,这只是一小段代码,但足以用于显示目的。接下来是带有 api 的函数,然后它将视图转移到站点 component/page:
home.component.ts
export class HomeComponent implements OnInit {
constructor(
private router: Router
){}
ngOnInit(): void {
}
getCoords(val: any){
var url = "http://www.mapquestapi.com/geocoding/v1/address?key=MYKEY&location=" + val;
fetch(url)
.then((res) => res.json())
.then((data) => {
var lat = data.results[0].locations[0].displayLatLng.lat;
var long = data.results[0].locations[0].displayLatLng.lng;
this.router.navigate(["/stations"])
})
}
}
stations.component.ts - 你在这里什么也看不到,因为我不知道该怎么做
import { Component, Input, OnInit } from '@angular/core';
@Component({
selector: 'app-stations',
templateUrl: './stations.component.html'
})
export class StationsComponent implements OnInit {
ngOnInit(): void {
}
}
现在一切正常。我已经在控制台日志中测试了 lat 和 long 变量,returns lat 和 long 就好了。我的问题是我需要将纬度和经度值发送到另一个 component/page 以用于计算。我不会撒谎说我已经搜索了互联网试图找到这样做的方法,但显然 angular 这样做并不容易。任何人对将纬度和经度值传递给另一个有任何想法 component/page?
你可以像下面的代码那样使用查询参数处理↓
getCoords(val: any){
var url = "http://www.mapquestapi.com/geocoding/v1/address?key=MYKEY&location=" + val;
fetch(url)
.then((res) => res.json())
.then((data) => {
var lat = data.results[0].locations[0].displayLatLng.lat;
var long = data.results[0].locations[0].displayLatLng.lng;
this.router.navigate(["/stations"], {queryParams :{ dataLat : lat, dataLong : long}} )
})
}
并且在您的 stations.component.ts 中,您可以使用 ActivatedRoute 获取数据:
import { Component, Input, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
@Component({
selector: 'app-stations',
templateUrl: './stations.component.html'
})
export class StationsComponent implements OnInit {
getLat:any;
getLong:any;
constructor(private route: ActivatedRoute) { }
ngOnInit(): void {
this.route.queryParams.subscribe(params => {
this.getLat = params.dataLat;
this.getLong = params.dataLong;
console.log(params);
});
}
}
您可以在此处了解更多信息 guide router and here
所以我在 angular 中有这个程序,到目前为止我从用户那里获取邮政编码并单击按钮,它将输入发送到一个函数,然后发送到 api 转换为纬度和经度坐标。见下文:
home.component.html
<div class="center" style="margin-top:50px;">
<label for="ZipCode"><b>Zip Code</b></label>
</div>
<div class="center">
<input name="zipcode" #zipcode id="zipcode" type="text" placeholder="Enter Zip Code" maxlength="5">
</div>
<div class="center" style="margin-top:100px;">
<button class="button button1" (click)="getCoords(zipcode.value)" ><b>Retrieve Data</b></button>
</div>
很明显,这只是一小段代码,但足以用于显示目的。接下来是带有 api 的函数,然后它将视图转移到站点 component/page:
home.component.ts
export class HomeComponent implements OnInit {
constructor(
private router: Router
){}
ngOnInit(): void {
}
getCoords(val: any){
var url = "http://www.mapquestapi.com/geocoding/v1/address?key=MYKEY&location=" + val;
fetch(url)
.then((res) => res.json())
.then((data) => {
var lat = data.results[0].locations[0].displayLatLng.lat;
var long = data.results[0].locations[0].displayLatLng.lng;
this.router.navigate(["/stations"])
})
}
}
stations.component.ts - 你在这里什么也看不到,因为我不知道该怎么做
import { Component, Input, OnInit } from '@angular/core';
@Component({
selector: 'app-stations',
templateUrl: './stations.component.html'
})
export class StationsComponent implements OnInit {
ngOnInit(): void {
}
}
现在一切正常。我已经在控制台日志中测试了 lat 和 long 变量,returns lat 和 long 就好了。我的问题是我需要将纬度和经度值发送到另一个 component/page 以用于计算。我不会撒谎说我已经搜索了互联网试图找到这样做的方法,但显然 angular 这样做并不容易。任何人对将纬度和经度值传递给另一个有任何想法 component/page?
你可以像下面的代码那样使用查询参数处理↓
getCoords(val: any){
var url = "http://www.mapquestapi.com/geocoding/v1/address?key=MYKEY&location=" + val;
fetch(url)
.then((res) => res.json())
.then((data) => {
var lat = data.results[0].locations[0].displayLatLng.lat;
var long = data.results[0].locations[0].displayLatLng.lng;
this.router.navigate(["/stations"], {queryParams :{ dataLat : lat, dataLong : long}} )
})
}
并且在您的 stations.component.ts 中,您可以使用 ActivatedRoute 获取数据:
import { Component, Input, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
@Component({
selector: 'app-stations',
templateUrl: './stations.component.html'
})
export class StationsComponent implements OnInit {
getLat:any;
getLong:any;
constructor(private route: ActivatedRoute) { }
ngOnInit(): void {
this.route.queryParams.subscribe(params => {
this.getLat = params.dataLat;
this.getLong = params.dataLong;
console.log(params);
});
}
}
您可以在此处了解更多信息 guide router and here