Свойство «фильтр» не существует для типа «Объект».При попытке отфильтровать ответ - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь получить данные из файла json, которые соответствуют имени игрока в URL.Например: localhost: 4200 / Players / Febiven должен возвращать только информацию о Febiven.Я использую Angular 6

Пока у меня есть этот код:

player.service.ts

  get(ingameName){
    return <Observable<Player>> this.http.get(endpoint).map(response =>{
        let data = response.filter(item=>{
          if (item.ingameName == ingameName) {
            return item
          }
        });
        if (data.length == 1){
          return data[0]
        }
        return {}
      })
      .catch(this.handleError)
  }

  private handleError(error:any, caught:any): any{
    console.log(error, caught)
  }

player-info.component.ts

 export interface Player {
  ingameName: string;
  name: string;
  intro: string;
  image: string;
  info: string;
  team: string;
  dob: string;
  earnings: string;
  role: string;
  game: string;
  favourite: string;
  IDs: string;

}

export class PlayerInfoComponent implements OnInit {
  players: Player[] = null;
  private routeSub:any;
  private req:any;
  ingameName:string;
  player : player;


  constructor(private route: ActivatedRoute, private plService : PlayerService) { }

  ngOnInit() {
    this.routeSub = this.route.params.subscribe(params => {
      this.ingameName = params['ingameName'];
      this.req = this.plService.get(this.ingameName).subscribe(data=>{
        this.player = data as player
      })
    });

Я получаю сообщение об ошибке «Свойство« фильтр »не существует для типа« Объект ».И у меня нет идеи, как это исправить, я посмотрел на несколько ответов, но ни один из них не помог мне.Если бы кто-нибудь мог помочь мне с исправлением этой ошибки, было бы здорово

Спасибо

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Попробуйте, это сработает: определите параметр внутри вашего класса и используйте его в функции ngOnInit () следующим образом:

export class VideoDetailComponent implements OnInit, OnDestroy {
  data_new:any;
  
  ngOnInit() {
    this.http.get("assets/json/videos.json").subscribe(data =>{
        this.data_new = data;
          this.data_new.filter(item=>{
            console.log(item)
            // do your work here
          })

      })
      }
}
0 голосов
/ 26 ноября 2018

filter существует только для массивов.Ваш ответ является объектом.Вы можете сделать это вместо:

get(ingameName){
    return <Observable<Player>> this.http.get(endpoint).map(response =>{
        let data = response.json();
        if (data.ingameName == ingameName){
           return data;
        }
        return {};
    })
    .catch(this.handleError)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...