【发布时间】:2022-12-17 15:05:48
【问题描述】:
您好,我正在尝试根据在主组件中单击哪个按钮来实现数据表组件中更改数据的行为,但无法弄清楚它确实令人困惑。
所以我有服务功能,它使用两个参数从 api 获取数据,并单击主组件中的按钮我想更改服务的参数,以便数据表组件信息使用新参数更新 这是服务
export class WeatherService {
constructor(private http: HttpClient) {}
getWeatherData(
lat: string = '51.51', //these are default parameters for london
lon: string = '-0.13' //i want to change these with click from home component
): Observable<WeatherData> {
return this.http.get<WeatherData>(
`https://archive-api.open-meteo.com/v1/era5?latitude=${lat}&longitude=${lon}&start_date=2005-08-25&end_date=2005-08-25&hourly=temperature_2m,relativehumidity_2m,dewpoint_2m,apparent_temperature,surface_pressure,precipitation,rain,cloudcover,windspeed_10m,winddirection_10m,soil_temperature_0_to_7cm`
);
}
}
该服务在这里使用默认服务参数,但想根据在主页上单击的城市按钮更改参数
ngOnInit(): void {
this.weatherDataLoading = true;
this.weatherService
.getWeatherData() //service is used here with default parameters (lat,long for london)
.pipe(
finalize(() => (this.weatherDataLoading = false)),
takeUntil(this.componentDestroyed$)
)
.subscribe({
next: (historicalWeatherData) => { ...code
这是带有按钮的主页组件和到天气数据组件的每个路由,每个组件都应在单击时将新参数(纬度、经度)传递给服务
<div class="container">
<div class="grid">
<button pButton type="button" routerLink="/weather-data">London</button>
<button pButton type="button" routerLink="/weather-data">New York</button>
<button pButton type="button" routerLink="/weather-data">Tokyo</button>
<button pButton type="button" routerLink="/weather-data">Sydney</button>
<button pButton type="button" routerLink="/weather-data">Madrid</button>
<button pButton type="button" routerLink="/weather-data">Paris</button>
</div>
例如,当我在主页按钮中单击东京时,它会将我重定向到天气数据表组件并更改服务中的纬度和经度,以便显示东京的准确数据,而不是伦敦的默认纬度和经度参数
【问题讨论】:
标签: javascript angular typescript