我正在尝试从服务中获取数据到下面的组件即我的服务
Service.ts
export 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
时,都未定义,并且在下面出现错误,如我尝试过滤的地方
错误TypeError:无法读取未定义的属性“地图”
不确定我在这里缺少什么
答案 0 :(得分:1)
由于您正在进行异步调用,因此当控件到达?
语句时,不会从服务中获取filteredData
的值。这就是cachedResults
错误的原因。
要解决此问题,您必须在服务调用完成后执行 语句,并返回数据作为响应。
undefined
另一种方法是使用Observable对象的 ngOnInit() {
this.psService.tDate
.subscribe(x => {
this.cachedResults = x;
this.filterData = [...new Set(this.cachedResults.map(item => item.cus_name))].filter(Boolean);
});
}
方法。
finally
在这里, ngOnInit() {
this.psService.tDate
.finally(() => {
this.filterData = [...new Set(this.cachedResults.map(item => item.cus_name))].filter(Boolean);
})
.subscribe(x => {
this.cachedResults = x;
});
}
方法在可观察的完成之后或发生错误时被调用。