Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 从中的http.Get()调用返回的数据中获取特定字段_Angular - Fatal编程技术网

Angular 从中的http.Get()调用返回的数据中获取特定字段

Angular 从中的http.Get()调用返回的数据中获取特定字段,angular,Angular,get调用返回以下数据 {"status":"success","data":[{"id":"1","employee_name":"Tiger Nixon","employee_salary":"320800","employee_age":"61","profile

get调用返回以下数据

{"status":"success","data":[{"id":"1","employee_name":"Tiger Nixon","employee_salary":"320800","employee_age":"61","profile_image":""},{"id":"2","employee_name":"Garrett Winters","employee_salary":"170750","employee_age":"63","profile_image":""},{"id":"3","employee_name":"Ashton Cox","employee_salary":"86000","employee_age":"66","profile_image":""},{"id":"4","employee_name":"Cedric Kelly","employee_salary":"433060","employee_age":"22","profile_image":""},{"id":"5","employee_name":"Airi Satou","employee_salary":"162700","employee_age":"33","profile_image":""},{"id":"6","employee_name":"Brielle Williamson","employee_salary":"372000","employee_age":"61","profile_image":""},{"id":"7","employee_name":"Herrod Chandler","employee_salary":"137500","employee_age":"59","profile_image":""},{"id":"8","employee_name":"Rhona Davidson","employee_salary":"327900","employee_age":"55","profile_image":""},{"id":"9","employee_name":"Colleen Hurst","employee_salary":"205500","employee_age":"39","profile_image":""},{"id":"10","employee_name":"Sonya Frost","employee_salary":"103600","employee_age":"23","profile_image":""},{"id":"11","employee_name":"Jena Gaines","employee_salary":"90560","employee_age":"30","profile_image":""},{"id":"12","employee_name":"Quinn Flynn","employee_salary":"342000","employee_age":"22","profile_image":""},{"id":"13","employee_name":"Charde Marshall","employee_salary":"470600","employee_age":"36","profile_image":""},{"id":"14","employee_name":"Haley Kennedy","employee_salary":"313500","employee_age":"43","profile_image":""},{"id":"15","employee_name":"Tatyana Fitzpatrick","employee_salary":"385750","employee_age":"19","profile_image":""},{"id":"16","employee_name":"Michael Silva","employee_salary":"198500","employee_age":"66","profile_image":""},{"id":"17","employee_name":"Paul Byrd","employee_salary":"725000","employee_age":"64","profile_image":""},{"id":"18","employee_name":"Gloria Little","employee_salary":"237500","employee_age":"59","profile_image":""},{"id":"19","employee_name":"Bradley Greer","employee_salary":"132000","employee_age":"41","profile_image":""},{"id":"20","employee_name":"Dai Rios","employee_salary":"217500","employee_age":"35","profile_image":""},{"id":"21","employee_name":"Jenette Caldwell","employee_salary":"345000","employee_age":"30","profile_image":""},{"id":"22","employee_name":"Yuri Berry","employee_salary":"675000","employee_age":"40","profile_image":""},{"id":"23","employee_name":"Caesar Vance","employee_salary":"106450","employee_age":"21","profile_image":""},{"id":"24","employee_name":"Doris Wilder","employee_salary":"85600","employee_age":"23","profile_image":""}]}
当我从subscribe返回数据时,我试图获取数据,然后只从中获取employee_age和employee_name

this.service.getEmployee().subscribe((data)=>this.employees = data)
控制台出现错误错误:找不到类型为“object”的不同支持对象“[object object]”。NgFor只支持绑定到数组之类的可重用文件


方法应该是什么,我正在学习angular,请帮助,如何从中仅获取年龄和姓名请注意JSON数据的格式,它基本上是一个带有两个键的对象,“status”是字符串,“data”是数组

话虽如此,如果您只想获得结果的“数据”部分,您必须像这样修改订阅代码

this.service.getEmployee().subscribe((res)=>this.employees = res.data)
    this.service.getEmployee().pipe(map(res=>{
let employeeArr: Employee[] = [];
res.data.forEach(x=>{
    let employeeObj: Employee=new Employee();
    employeeObj.employee_age = x.employee_age;
    employeeObj.employee_name = x.employee.name;

    employeeArr.push(employeeObj);
});
return employeeArr;
}).subscribe((res)=>this.employees = res);
例如,如果您想要将服务获取的json修改为您选择的不同格式,您可以使用maprxjs操作符,该操作符可以将数据从一种格式转换为另一种格式

例如,如果您的employees数组由对象组成,其中只有两个字段employee_ageemployee_name,则可以这样映射结果

this.service.getEmployee().subscribe((res)=>this.employees = res.data)
    this.service.getEmployee().pipe(map(res=>{
let employeeArr: Employee[] = [];
res.data.forEach(x=>{
    let employeeObj: Employee=new Employee();
    employeeObj.employee_age = x.employee_age;
    employeeObj.employee_name = x.employee.name;

    employeeArr.push(employeeObj);
});
return employeeArr;
}).subscribe((res)=>this.employees = res);
因此,基本上我们已经将我们的反应转变为另一种形式


谢谢。

这回答了你的问题吗?我有状态和数据,我首先只需要获取数据,然后从组件中获取名称和年龄,以执行某些操作@EdricI已经尝试过,仅获取@obaiddlease类型上不存在的属性“数据”,请参考更新的答案。另外,如果您显示this.employees对象的格式也会很好。谢谢。Employee是一个类还是一个接口,因为你不能创建Interface@Obaid的对象,谢谢你的引导,我完成了它,而不是res.Employee\u age需要做x.Employee\u age,我将逻辑移到一个单独的函数,并在Map中调用函数。这只是一个例子,我假设它是一个类。。。你可以有一个接口。。在这种情况下,您不会使用new关键字,而是用花括号实例化对象,例如,让employee:employee={employee\u age:res.remployee\u age}…const employeeObj={}as employee@奥贝德