Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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 角度可观测问题_Angular_Typescript_Observable - Fatal编程技术网

Angular 角度可观测问题

Angular 角度可观测问题,angular,typescript,observable,Angular,Typescript,Observable,我已经试着让observable工作了一段时间,但我一直失败 此时此刻,我的代码开始看起来更像战场,而不是通常的顺序 我不断得到“错误类型错误:无法读取未定义的属性‘map’。” 我尝试导入json数据(有效),然后过滤出“活动”的成员(有效),按字母顺序排序(无效),并获得“团队”列中所有内容的唯一列表(无效) 服务如下所示: import { Injectable } from '@angular/core'; import { Http, Response } from '@angular

我已经试着让observable工作了一段时间,但我一直失败

此时此刻,我的代码开始看起来更像战场,而不是通常的顺序

我不断得到“错误类型错误:无法读取未定义的属性‘map’。”

我尝试导入json数据(有效),然后过滤出“活动”的成员(有效),按字母顺序排序(无效),并获得“团队”列中所有内容的唯一列表(无效)

服务如下所示:

import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
//import 'rxjs/add/operator/catch';
//import 'rxjs/add/operator/map';
import { catchError, map, tap } from 'rxjs/operators';

import { Member } from '../class/member';
import { HttpClient, HttpHeaders } from '@angular/common/http';

@Injectable()
export class UserinfoService
{

    //constructor
    constructor(private http: HttpClient)
    {

    }

    //methods or services

    getMembers(): Observable<Member[]>
    {
    return this.http.get<Member[]>('http://datalocation.com/JsonData/api/teammembers');
    }
}
任何帮助都将不胜感激。 当它只是一个服务时,我让一切都正常工作,但当我开始使用Observable时,一切都变得一团糟。

userinfoService.getMembers().subscribe(teamMembers=>this.teamMembers=teamMembers .filter(member=>member.isActive) .sort((a,b)=>a.lastName.localeCompare(b.lastName))

听说您已经在组件变量中获得了teamMembers数组。因此,无需在后面的部分中进行必要的映射。您可以直接在teamMembers数组上使用筛选器

//getTeams
this.teams = this.teamMembers.filter((value, index, self) => self.indexOf(value) === index)
userinfoService.getMembers().subscribe(teamMembers=>this.teamMembers=teamMembers .filter(member=>member.isActive) .sort((a,b)=>a.lastName.localeCompare(b.lastName))

听说您已经在组件变量中获得了teamMembers数组。因此,无需在后面的部分中进行必要的映射。您可以直接在teamMembers数组上使用筛选器

//getTeams
this.teams = this.teamMembers.filter((value, index, self) => self.indexOf(value) === index)

你只需要移动订阅中的所有内容

也不是100%在构造函数中完成所有事情,我通常在我的ngOnInit中做这类事情,但现在既不在这里也不在那里

你可以做的另一件事是:
teamMembers:any[]=新数组()

这实际上会正确初始化数组,这样就不会出现未定义的情况。

您只需移动订阅中的所有内容即可

也不是100%在构造函数中完成所有事情,我通常在我的ngOnInit中做这类事情,但现在既不在这里也不在那里

你可以做的另一件事是:
teamMembers:any[]=新数组()

这实际上将正确初始化数组,使其不会未定义。

订阅中的代码是异步运行的

您正试图在订阅设置this.teamsMembers.map之前执行
this.teamsMembers.map


您应该将您的
this.teams=this.teamsMembers.map…
代码放在subscribe lambda函数中。

订阅中的代码是异步运行的

您正试图在订阅设置this.teamsMembers.map之前执行
this.teamsMembers.map


您应该将
this.teams=this.teamsMembers.map…
代码放入subscribe lambda函数中。

this.teamMembers
在其余构造函数运行时尚未填充(因为这是异步发生的),因此当您尝试填充
this.teams
时,您正在对
未定义的
值调用
map
此.teamMembers
在其余构造函数运行时尚未填充(因为这是异步发生的),因此当您尝试填充
此.teams
时,您正在对
未定义的
值调用
map
。请原谅我的无知,但是我如何得到列team的值作为结果呢?对不起,我不明白你在问什么,你能告诉我在收到teamMembers数组后你想要得到什么吗?表中的一列称为“team”。每个团队成员都被分配到其中一个团队。getTeams方法是获取一个包含每个团队的列表,其中不包含重复的团队。然后,变量“teams”用于填充一个下拉列表,用户可以从中选择.ohk,这正是您所需的
.map
操作符,在获取teams数组后,您是否可以使用
.map
操作符。或者只需更改
filter
map
运算符的顺序。首先进行筛选,然后进行.map。请原谅我的无知,但我如何获得列team的值,然后作为结果?对不起,我不明白您在问什么,您能告诉我在收到teamMembers数组后您想要获得什么吗?表中的一列称为“team”。每个团队成员都被分配到其中一个团队。getTeams方法是获取一个包含每个团队的列表,其中不包含重复的团队。然后,变量“teams”用于填充一个下拉列表,用户可以从中选择.ohk,这正是您所需的
.map
操作符,在获取teams数组后,您是否可以使用
.map
操作符。或者只需更改
filter
map
运算符的顺序。首先进行筛选,然后进行.map。