我尝试过滤数据(获取给定数量的记录)
http.get(baseUrl + 'api/Student/Students1')
.filter( stud => stud.Phone == 123)
.subscribe(data => {
this.studentTEST = data.json() as Students[];
}, error => console.error(error));
但是得到错误:
“属性'电话'在”响应“类型上不存在。
angular的版本是4.2.5,但最近在package.json(5.1.0)中更新。 查找
我从asp.net核心控制器获取数据库上下文。
这是我的角度代码:
import { Component, Inject } from '@angular/core';
import 'rxjs/Rx';
import { Http, Response } from '@angular/http';
import { Observable } from 'RxJS';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/filter';
@Component({
selector: 'fetchdata',
templateUrl: './fetchdata.component.html'
})
export class FetchDataComponent {
public studentTEST: Students[];
public stud: Students[];
constructor(private http: Http, @Inject('BASE_URL') baseUrl: string) {
http.get(baseUrl + 'api/Student/Students1')
.map((response: Response) => response.json() as Students[])
.filter(stud => stud.Phone === 123);
//subscribe(result => {
//this.studentTEST = result.json();
}
}
export interface Students {
StdName: string;
Email: string;
Phone: number;
Address: string;
}
现在错误:
“学生[]”类型中不存在“手机”属性。
答案 0 :(得分:1)
首先,您需要{jinc()的map
获取请求或使用httpClient
。然后你可以过滤,并从服务中删除你订阅方法。您需要订阅组件,您可以使用| async
pipe。
http.get(baseUrl + 'api/Student/Students1')
.map((response: Response) => response.json() as Students[])
.filter(stud => stud.Phone === 123);
答案 1 :(得分:1)
后一种错误完全正确:
Property 'Phone' does not exist on type 'Students[]'
。
没有。 Phone
上存在Students
,而不是Students[]
。
您实际上需要在地图中设置filter
:
http.get(baseUrl + 'api/Student/Students1')
.map(response => response.json().filter(stud => stud.Phone === 123))
然后你在这里返回的内容不再是Students[]
类型的回复,所以你需要把它留下来。