在ngOnDestroy方法中,我取消订阅一次已订阅的observable,否则代码会被多次执行...
ngOnInit()
{
this.sub = this.route.params.subscribe(params =>
{
this.projectId = +params['id'];
this.projectStore.project = this.projectId;
// load data when the route changes
this._tasksService.gettasks(this.projectId).subscribe(years => { this.tasks = years.map(y => new task(y)) }); // no need to clean up the subscription
});
// load data when the component is initialized
this._tasksService.gettasks(this.projectId).subscribe(years => { this.tasks = years.map(y => new task(y)) }); // no need to clean up the subscription
}
ngOnDestroy()
{
this.sub.unsubscribe();
}
现在我想把它放在路由器解析类中,但没有ngOnDestroy--当然--只有一个NavigationEnd事件,我可以再次订阅。
这意味着我订阅了一个NavigationStart事件(当我离开路由时发生),以便取消订阅另一个订阅,即路由参数更改订阅哈哈哈...
我想这不是一个好办法,但谷歌什么也没有提供。
constructor(private service: TasksService, private router: Router)
{
this.navigationEnded = this.router.events
.filter(event => event instanceof NavigationStart)
.map(() => this.router.routerState.root)
.subscribe((event) =>
{
this.navigationEnded.unsubscribe();
});
}
this.route.params.subscribe(params =>
{
// reload data by the new id parameter does not work with params
// I have to use inside here: route.params['id']
});
params数组中没有id,它的长度仅为0。
相反,我必须在params订阅中使用route.params['id'],但为什么呢?
您可以只使用first()
运算符。这样,可观察到的在第一个事件之后完成。不需要以这种方式退订:
this.router.events
.filter(event => event instanceof NavigationStart)
.map(() => this.router.routerState.root)
.first()
.subscribe((event) =>
{
//this.navigationEnded.unsubscribe();
});
我有一个组件订阅服务中的一个可观察对象。该方法反过来订阅另一个服务中的可观察对象。我想将一个数组从最后一个服务传递回第一个服务,然后第一个服务将该数组传递回组件。更具体地说,该组件调用其本地服务,然后调用一个数据服务,该数据服务通过http客户端访问我的数据库。http客户端正在工作,数据服务将数组返回给本地服务。本地服务接收数组,但我不知道如何将该数组作为可观察对象传递回组件。以下是简短的代码块
Observables 是多个值的惰性推送集合。它填补了下面表格中的空白: 单个值 多个值 拉取 Function Iterator 推送 Promise Observable 示例 - 当订阅下面代码中的 Observable 的时候会立即(同步地)推送值1、2、3,然后1秒后会推送值4,再然后是完成流: var observable = Rx.Observable.create(functio
我正在努力理解如何合并两个可观察对象并利用它们合并后的产品。我在mergeMap、switchMap、flatMap、大理石图等上看了无数视频,但我仍然不知道合并观测值是如何工作的。我觉得在使用RxJS的时候,我不会有效率,甚至不会正确。 我有一个要订阅的可观测值,我还想订阅代码中特定表单数组的valueChanges可观测值。但是,我需要确保只有在正确构建表单数组之后才能进行第二次订阅,否则将出
我有一个servers对象数组,其中在数组中有另一个可观察对象数组,其键是[securityGroups]。 我有另一个securitygroupsArray数组,在这里我使用API来获取所有SecurityGroups。 我需要在securityGroups键中查找服务器阵列中该服务器上安全组的所有名称,并在一个选项中只显示我的其他阵列(securityGroupArray)的ngfor的不同名
我正在从事一个涉及Hystrix的项目,我决定使用RxJava。现在,忘记Hystrix的其余部分,因为我相信主要问题是我完全搞砸了正确编写可观察代码。 需要:我需要一种方法来返回一个代表多个可观察对象的可观察对象,每个可观察对象都运行一个用户任务。我希望该可观察对象能够返回任务的所有结果,甚至错误。 问题:可观测流会因错误而消亡。如果我有三个任务,而第二个任务引发了一个异常,那么即使第三个任务成