Typescript rxjs在使用HttpClient时的困惑
我正在尝试使用http.get的类型化版本。如何获取要添加到此.rowData的类型化数组? 下面的c参数是数组本身:Typescript rxjs在使用HttpClient时的困惑,typescript,rxjs,angular-httpclient,Typescript,Rxjs,Angular Httpclient,我正在尝试使用http.get的类型化版本。如何获取要添加到此.rowData的类型化数组? 下面的c参数是数组本身: this.rowData = this.courseProvider.getCourses().map(c => new Course(c)); //course.provider.ts import 'rxjs/add/operator/share'; import 'rxjs/add/operator/mergeMap'; import { Injectable }
this.rowData = this.courseProvider.getCourses().map(c => new Course(c));
//course.provider.ts
import 'rxjs/add/operator/share';
import 'rxjs/add/operator/mergeMap';
import { Injectable } from '@angular/core';
import { Api } from '../api/api';
import { Course } from '../../models'
@Injectable()
export class CourseProvider
{
course: Course;
constructor(public api: Api)
{
}
getCourses() {
let observable = this.api.get<Course[]>('courses');
observable.subscribe((courses: Course[]) => {
}, err => {
console.error('ERROR', err);
throw err;
});
return observable;
}
}
//api.ts
import { HttpClient, HttpParams, HttpHeaders, HttpEvent } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
@Injectable()
export class Api {
url: string = 'http://192.168.0.2:39049/Services/api';
get<T>(endpoint: string, params?: any, reqOpts?: any) : Observable<T> {
if (!reqOpts)
{
reqOpts = this.getHeaders();
}
return this.http.get<T>(this.url + '/' + endpoint, {
headers: reqOpts
});
}
}
从'@angular/common/http'导入{HttpClient,HttpParams,HttpHeaders,HttpEvent};
从“@angular/core”导入{Injectable};
从“rxjs”导入{Observable};
@可注射()
导出类Api{
url:string='1〕http://192.168.0.2:39049/Services/api';
get(端点:字符串,参数?:任意,请求?:任意):可观察{
如果(!REQUOPTS)
{
reqOpts=this.getHeaders();
}
返回此.http.get(this.url+'/'+端点{
标题:请求选项
});
}
}
类型提示不会导致任何类型转换或转换。感谢jonrsharpe的回复,可能是重复的。如何实现类型化数组?我也尝试过rxjs映射操作符,但没有成功。因此,请给出一个例子,“没有成功”并不是一个非常具体的问题。上面的代码封装在一个名为getCourses的函数中。调用代码如下:this.rowData=this.courseProvider.getCourses().map(c=>newcourse(c));c是一个数组,不是单个实例。
import { HttpClient, HttpParams, HttpHeaders, HttpEvent } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
@Injectable()
export class Api {
url: string = 'http://192.168.0.2:39049/Services/api';
get<T>(endpoint: string, params?: any, reqOpts?: any) : Observable<T> {
if (!reqOpts)
{
reqOpts = this.getHeaders();
}
return this.http.get<T>(this.url + '/' + endpoint, {
headers: reqOpts
});
}
}