Итак, я изучаю Angular и работаю над проектом с Spotify API. Когда я ищу музыку, я получаю эту ошибку (Ошибка при попытке различить 'A $ AP Twelvyy'. Допускаются только массивы и итерации). Я хочу использовать switchMap, так как событие запускается с keyup.
Это услуга
export class SpotifyService{
constructor(private _http: HttpClient){
}
searchMusic(query: string){
debugger;
const searchUrl=`https://api.spotify.com/v1/${query}`;
const headers=new HttpHeaders({
Authorization:
"Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx"
});
return this._http.get(searchUrl, {headers});
}
getArtists(query: string) {
debugger
return this.searchMusic(`search?q=${query}&type=artist&limit=15`).pipe(
switchMap(data => data["artists"].items)
);
}
}
Это поисковая составляющая
import { Component } from '@angular/core';
import {SpotifyService} from '../services/spotify.services'
@Component({
selector: 'app-searchbar',
templateUrl: './searchbar.component.html',
styleUrls: ['./searchbar.component.scss'],
providers: [SpotifyService]
})
export class SearchBarComponent {
searchString: string;
results: string[];
artists: any[]=[];
loading: boolean;
tracks: any []=[];
constructor(private _spotifyService:SpotifyService){
}
search(query){
console.log(query);
this._spotifyService.getArtists( query )
.subscribe( (data: any) => {
this.artists = data;
console.log(this.artists);
});
}
}
Это шаблон
<div class="container">
<input #query id="inputbar" type="text" (keyup)="search(query.value)" class="form-control" placeholder="Search...">
<div class="search"></div>
</div>