2017-12-06 2 views
0

Ich erhalte einen Fehler in dieser Zeile this.apiService.getGifs (searchValue.value) .subscribe (Daten => this.results = Daten);Der Typ 'void' kann nicht dem Typ 'any []' zugewiesen werden, wenn Daten an Dienst gesendet werden

Mein Code funktioniert, aber ich bekomme diesen Fehler, also möchte ich herausfinden, wie es zu beheben ist. Ich glaube, es liegt an diesem Teil .subscribe(data=>this.results=data);, aber ohne es Code funktioniert nicht.

apiService

@Injectable() 
export class ApiService { 

private results = new BehaviorSubject([]); 

public getResults$(){ 
    return this.results.asObservable(); 
} 

    constructor (private http: Http) {} 
    link = 'http://api.giphy.com/v1/gifs/search?q='; 
    ApiKey = 'MaklOv0qiTVslRvJlBShgpr46LWPs5Z0'; 

    public getGifs(searchValue:string) { 
    return this.http.get(this.link + searchValue +'&api_key='+ this.ApiKey) 
    .map((res:Response) => this.results.next(res.json().data)); 
    } 
} 

Komponente, die Daten senden

export class SearchComponent implements OnInit { 
    results = [] 

    constructor(private apiService: ApiService) { } 

    ngOnInit() { 
    } 

    onSearch(searchValue) { 
    this.apiService.getGifs(searchValue.value).subscribe(data=>this.results=data); 
    } 
} 

Component Service, der Daten

export class OutputComponent implements OnInit { 
    results = []; 
    constructor(private apiService: ApiService){ 
    apiService.getResults$().subscribe(data => this.results = data) 
} 
+1

Der nächste Aufruf eines Betreffs gibt nichts zurück. Sie versuchen, einem array-typed-Feld nichts zuzuordnen. Was ist unklar von dem Fehler? – jonrsharpe

Antwort

1

zusätzlich erhält, was gesagt @jonrsharpe dies sollte funktionieren:

import 'rxjs/add/operator/do'; 

public getGifs(searchValue:string) { 
    return this.http.get(this.link + searchValue +'&api_key='+ this.ApiKey) 
    .map((res:Response) => res.json().data) 
    .do(data => this.results.next(data)) 
    } 
+0

Es funktioniert, wenn ich "do" durch "subscribe" ersetzen – Allan

+0

@Allan ist es besser, nicht innerhalb eines Dienstes zu abonnieren, sehen Sie das Update, das Sie 'do' Operator importieren müssen. –

+0

Ich sehe, danke. Jetzt funktioniert es – Allan

Verwandte Themen