Я написал два метода для получения данных из API asp.net.На вкладке «Сеть» инструментов разработчика Chrome ответ (данные о прибытии с сервера) правильный, но метод 1 сталкивается с этой ошибкой:
Error: scrs.find is not a function
at MapSubscriber.eval [as project]
and scrs[in method 2] is undefined.
Может кто-нибудь помочь мне найти проблему, пожалуйста?
// ------------- метод 1 ---------------------------
// ------------ в MySerivce -------------------------
this.scoreStore = {scores:[]};
this.scoreSubjext = <BehaviorSubject<IScore[]>> new BehaviorSubject([]);
this.scores = this.scoreSubjext.asObservable();
GetScore(st)
{
var header = new HttpHeaders({ "Content-Type": "application/json" });
return this.httpClnt.post(this.BASE_URL+this.URL_GET_SCORES,st,{headers: header})
.subscribe((resp:any)=>{
this.scoreStore.scores = resp;
this.scoreSubjext.next(Object.assign({},this.scoreStore).scores);
},catchError((error: any) => ErrorObservable.create(error))
);
}
// ------------------ вызовите метод и найдите желаемый результат
this.myService.GetScore(this.st);
this.score = this.mySerrvice.scores.pipe(map(scrs =>{
return scrs.find(scr => scr.id === id);
}));
<div *ngIf="(score | async | json) as userScore">
<li>{{userScore.grade}}</li>
<li>{{userScore. ...}}</li>
</div>
//???????????????
Error: scrs.find is not a function
at MapSubscriber.eval [as project]
, пока на вкладке сети инструментов разработчика браузера есть действительный ответ.
// ----------------------- Метод 2 ----------------
// ----------------------- в MySerivce -----------
GetScore2(st)
{
var header = new HttpHeaders({ "Content-Type": "application/json" });
return this.httpClnt.post(this.BASE_URL+this.URL_GET_SCORES,st,{headers:
header}).toPromise();
}
// ------------------------ вызов метода -----------------------
let scrs = await this.myService.GetScore2(this.st);
console.log(scrs);
// ????????????????????
scrs не определено, пока существует действительныйответ во вкладке сети инструментов разработчика браузера.
большое спасибо.