はじめに:私はこの全く同じエラーで他にもたくさんの質問があることを知っていますが、私はまだ自分自身を理解できないようです。タイプ 'Observable <{}>はタイプ' Observable 'に割り当てられません
私は単純なサービスと、もう1つのシンプルなコンポーネントを持っています。私は非常に密接にangular2ヒーローのチュートリアルに従うことをしようとしている、ここに私のコードです:
location.ts
export class Location {
name: string;
type: string;
c: string;
zmw: string;
tz: string;
tzs: string;
l: string;
ll: string;
lat: string;
lon: string;
}
場所-search.service.ts
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs';
import { Location } from './location';
@Injectable()
export class LocationSearchService {
constructor(private http: Http) {}
search(term: string): Observable<Location[]> {
return this.http
.get(`api_url_i've_removed`)
.map((r: Response) => r.json().data as Location[]);
}
}
場所-search.component.ts
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';
import { LocationSearchService } from './location-search.service';
import { Location } from './location';
@Component({
selector: 'location-search',
templateUrl: 'location-search.component.html',
styleUrls: ['assets/styles.css'],
providers: [ LocationSearchService ]
})
export class LocationSearchComponent implements OnInit {
locations: Observable<Location[]>;
private searchTerms = new Subject<string>();
constructor(
private locationSearchService: LocationSearchService,
private router: Router) {}
search(term: string): void {
this.searchTerms.next(term);
}
ngOnInit(): void {
this.locations = this.searchTerms // <- ERROR HERE
.debounceTime(300)
.distinctUntilChanged()
.switchMap(term => term
? this.locationSearchService.search(term)
: Observable.of<Location[]>([]))
.catch(error => {
console.log(error);
return Observable.of<Location[]>([]);
})
}
}
私はエラーを取得しておいてください。 Type 'Observable<{}>' is not assignable to type 'Observable<Location[]>'.at line 29 col 9
私は明らかに間違って何かをやっていますか?助けてくれてありがとう
ありがとう!私は '.switchmap> .'と' .catch > ' –
を実行することでこの問題を解決しました。それを知らなかった - ありがとう!私の答えも更新されます。 – mxii
Thx、あなたの最初の解決策は私のためにそれをしました。 – SoS