项目:互动世界地图 使用SVG地图文件获取国家名称 使用国家/地区名称进行 API 调用 使用 API 中的信息通过 API 中的信息更新文本框。
我正在遵循指南,但似乎需要能够调用Subject()方法/模块/类型/其他事物,但我没有这种类型,所以当我编译时失败。看图:
文件名:api.service.ts
`import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { __classPrivateFieldGet } from 'tslib';
@Injectable({
providedIn: 'root'
})
export class ApiService {
constructor(private http: HttpClient) { }
fetchCountryInfo(country: string) {
let api = "https://api.worldbank.org/v2/country/";
api = api + country + "?format=JSON";
console.log(api);
return this.http.get(api)
}
setWeatherData(country: string) {
let subject = new Subject();
this.fetchCountryInfo(country).subscribe(data: any) => {
subject.next({
country: data.name
})
}
}
}
`
文件名:map-world.component.ts
` import { Component } from '@angular/core';
import { ApiService } from '../api.service';
@Component({
selector: 'app-world-map',
templateUrl: './world-map.component.html',
styleUrl: './world-map.component.css'
})
export class WorldMapComponent {
constructor(private apiService: ApiService){}
getInfo(event: any) {
console.log(event.target.id);
this.apiService.fetchCountryInfo(event.target.id).subscribe(data => {
console.log(data)
});
}
}
`
我已经尝试如图所示进行构建。这会导致图像中出现错误。我预料到了这一点,但充满希望。
然后我尝试更新订阅功能内的“信息框”。预计这会更新文本框,但它不能,因为它似乎无法从订阅内部读取 DOM。
我尝试将 DOM 作为变量传递到订阅中。我没想到这会起作用,而且我可能没有做对。
我尝试将订阅返回到变量。我以为这会让我读取数据,但我认为我得到的只是永远不会得到跟进的数据的承诺。
我尝试将所述可观察量格式化为 JSON,但它只是变成了“safesubscription2”。我没想到这会起作用,但在寻求帮助之前我想尝试任何我能想到的事情。
修好了。这是答案。
import { Subject} from 'rxjs';
只需要导入Subject();