首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >路由器多次订阅呼叫

路由器多次订阅呼叫
EN

Stack Overflow用户
提问于 2017-05-29 13:26:02
回答 5查看 12.8K关注 0票数 13

用这个代码

代码语言:javascript
复制
ngOnInit() {
  this.router.events.subscribe((val) => {
    if (this.router.url.indexOf('page') > -1) {
      let id = this.activedRoute.snapshot.params['Id']
      this.busy = this.httpCall.get('/pub/page/GetPageById/' + id)
        .subscribe(data => {
          this.pages = <Page[]>data
        })

      console.log(id)
    }
  })
}

当我导航到domain.com/#/en/page/13时,它会按预期记录13

但是,当我导航到id为27的页面时,它会记录:13 13 27

当我导航回13日志时,拥有:27 27 13

为什么会这样呢?

EN

Stack Overflow用户

发布于 2017-05-29 13:30:02

当您破坏组件时,您必须取消订阅。

首先你必须

代码语言:javascript
复制
import { OnDestroy } from '@angular/core;'

那你就得

代码语言:javascript
复制
export class myClass implements OnInit, OnDestroy {
    myObserver = null;
    // Rest of your code
}

在你的ngOnInit里,你必须

代码语言:javascript
复制
ngOnInit() {
    this.myObserver = this.router.events.subscribe(...);
}

然后,创建一个函数

代码语言:javascript
复制
ngOnDestroy() {
    this.myObserver.unsubscribe();
}
票数 13
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44243653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档