【发布时间】:2019-06-26 02:26:15
【问题描述】:
Angular 版本 8.0.4
如何从以角度返回 Observable 类型 T 数组的泛型方法获取数据? 这是我写的函数
获取数据的通用方法
public getData<T> (path: string): Observable<T[]> {
return this.http.get(this.baseUrl + path).subscribe();
// return this.data;
// var ddd: T[];
// return this.http.get<Observable<T[]>>(this.baseUrl + path);
// var data: any = this.http.get(this.baseUrl + path).toPromise();
// console.log(data)
// return of(data);
}
这是调用函数
getRecords(): Observable<Trailers[]> {
var k: any = this.httpService.getData<Trailers>("get_trailers");
console.log(of(k));
return of()
}
Angular 2 旧版本有这样的东西
public getObjects<T> (path: string): Observable<T[]> {
return this.http.get(this.baseUrl+path)
.map((response: Response) => <T[]> response.json())
.do(data => console.log('Retrieved data from: ' + this.baseUrl+path))
.catch(error => this.handleError(error, this.router));
}
What is equivalent in angular 0.8 to this ?
【问题讨论】:
-
你可以尝试只返回 Observable(返回 this.http.get(this.baseUrl + path))然后在调用函数 this.httpService.getData
("get_trailers") 中使用 subscribe .subscribe( (t) => {k = t); -
@Nuttertools 你的意思是像
return <Observable<T[]>>this.http.get(this.baseUrl + path); -
public getData
(path: string): Observable { return this.http.get(this.baseUrl + path); | -
上面的 @Nuttertools 会抛出一个错误,因为它缺少
<Observable<T[]>>转换和 this `this.httpService.getData("get_trailers").subscribe( (t) => {k = t );` 将返回 observable 而不是数据 ``` -
Conversion of type 'Subscription' to type 'Observable<T[]>' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
标签: angular observable angular2-services