Angular 无法在国家/地区下拉选择后读取未定义的属性“subscribe”
我试图从下拉列表中选择州,在选择国家并选择州后,我确实会出现此错误,尽管我觉得一切都很完美Angular 无法在国家/地区下拉选择后读取未定义的属性“subscribe”,angular,rxjs,Angular,Rxjs,我试图从下拉列表中选择州,在选择国家并选择州后,我确实会出现此错误,尽管我觉得一切都很完美 core.js:6210 ERROR TypeError: Cannot read property 'subscribe' of undefined at FormComponent.getStateOnCountrySelection 以下是ts文件: getStateOnCountrySelection(id){ this.selectedStatesOption = [];
core.js:6210 ERROR TypeError: Cannot read property 'subscribe' of undefined
at FormComponent.getStateOnCountrySelection
以下是ts文件:
getStateOnCountrySelection(id){
this.selectedStatesOption = [];
this.countriesService.getStates(id).subscribe((data:any) =>{
this.selectedStatesOption.push(data);
});
}
下面是选择州的服务类
public getStates(id: number): Observable<State[]> {
let selectedStates;
this.getCountries().subscribe((data:any) =>{
let states = data["states"];
selectedStates = states.filter((data:any) =>{
return parseInt(data.id) == id
});
});
return selectedStates;
}
请问我做错了什么这里有多个问题 您没有从服务中的函数返回任何内容 数据是异步获取的。它不能像您尝试的那样同步返回。您需要从函数中返回可观测值。您可以使用RxJS映射操作符根据需求过滤响应 服务 public getStatesid:number:可观察{ 让我们选择状态; 返回此.getCountries.pipe mapdata:any[]=>data['states'].filterstate=>parseIntstate.id==id作为状态[] ; }
请通读全文,了解异步数据是如何工作的。您正在重新调整一个不可观测的数组 这是一个近似函数。可能有问题
public getStates(id: number): Observable<State[]> {
return this.getCountries().pipe(map((data:any) =>{
let states = data["states"];
return states.filter((data:any) =>{
return parseInt(data.id) == id
});
}));
}
选择国家后,,“状态”下拉列表为空,在console上仅返回一个状态检查响应数据是否确实包含所有状态。然后,您需要检查后端服务是否返回正确的数据。仅返回一个状态,而状态未填充在筛选器之前使用console.log,并检查是否从服务器填充数据。