我正在尝试从服务中获取数据到下面的组件是我的服务服务.tsexport class PrjService { tDate: Observable<filModel[]>; prjData:Observable<filModel[]>;entityUrl;constructor(){this.entityUrl = 'PrjDetail/GetByRep'; this.tDate = service.get<ShipDateFilterModel[]>(this.entityUrl);}我尝试检索的组件如下所示export class RFComponent implements OnInit { cachedResults: any[]; shipToData: any;constructor(private psService: PrjService){} ngOnInit() { this.psService.tDate.subscribe(x => this.cachedResults = x); this.filterData = [...new Set(this.cachedResults.map(item => item.cus_name))].filter(Boolean); }这里每当对服务的调用this.cachedResults是未定义的,我在下面收到错误,就像我试图过滤的地方错误类型错误:无法读取未定义的属性“地图”不确定我在这里缺少什么
1 回答
呼如林
TA贡献1798条经验 获得超3个赞
由于您正在进行异步调用,因此在控制到达filteredData语句时,cachedResults不会从服务中获取值。这就是undefined错误的原因。
要解决该问题,您必须在服务调用完成并返回数据作为响应后执行该语句。
ngOnInit() {
this.psService.tDate
.subscribe(x => {
this.cachedResults = x;
this.filterData = [...new Set(this.cachedResults.map(item => item.cus_name))].filter(Boolean);
});
}
另一种方法是使用finallyObservable 对象的方法。
ngOnInit() {
this.psService.tDate
.finally(() => {
this.filterData = [...new Set(this.cachedResults.map(item => item.cus_name))].filter(Boolean);
})
.subscribe(x => {
this.cachedResults = x;
});
}
在这里,该finally方法在 observable 完成后或发生错误时调用。
添加回答
举报
0/150
提交
取消