首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为同一路由链路召回角4中的组件控制器?

如何为同一路由链路召回角4中的组件控制器?
EN

Stack Overflow用户
提问于 2018-01-05 11:27:26
回答 2查看 1.7K关注 0票数 1

我有两个路由链接:

代码语言:javascript
复制
/article/1
/article/2

这些链接与相同的组成部分相关:

代码语言:javascript
复制
{path: 'article/:id', component: HomeComponent}

当组件被初始化时,在单击over /article/2之后,它不会再次初始化该组件。

怎么修?

是:

代码语言:javascript
复制
 <div (click)="setCurrentRole(role)" *ngFor="let item of menuService.getMenuItems(role)"><a
                [routerLink]="[item.url]" (click)="setActiveLink(i, item.url)" [routerLinkActive]="['is-active']">{{item.title
                | translate}}</a></div>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-05 11:28:49

要重新加载组件:

在组件中,在init挂钩上,订阅路由事件,并将init代码移动到函数中。

代码语言:javascript
复制
constructor(private route: ActivatedRoute) {}

ngOnInit() {
  this.route.params.subscribe(params => {
    console.log(params['id']);
    this.doOnInit();
  });
}

doOnInit() {
  // your old code here
}

订阅路由器事件:

代码语言:javascript
复制
constructor(private router: Router) {}

ngOnInit() {
  this.router.events.subscribe(events => {
    // Several routing events, take only the last one
    if (events instanceof NavigationEnd || events.constructor.name === NavigationEnd.name) {
      console.log(params['id']);
      this.doOnInit();
    }
  });
}

doOnInit() {
  // your old code here
}
票数 1
EN

Stack Overflow用户

发布于 2018-01-05 11:42:30

您只对您在url中更改的id感兴趣,然后您可以这样做。

代码语言:javascript
复制
    id: number;

  constructor(private route: ActivatedRoute){}

  ngOnInit() {
    this.id = +this.route.snapshot.params['id'];
    this.route.params.subscribe(
      params => {
        /// this method will called if you navigate to different id
        this.id = +params['id'];
      }
    )
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48112688

复制
相关文章

相似问题

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