路线和组件没有刷新

时间:2017-09-22 16:33:24

标签: javascript angular

我有一个包含3个页面的超小型网站,homeabout usservices,因此网址为http://localhost:4200 /,http://localhost:4200/about-us和{{ 1}}

我有一个http://localhost:4200/services我想要控制日志PagesComponent,所以根目录的空字符串(或者我现在得到的未定义,这很好),而另一个2时候我单击导航栏中的各自链接,我希望控制日志url slugsabout-us

这些是我的路线:

services

我的{ path: ':page', component: PagesComponent }, { path: '', component: PagesComponent },

PagesComponent

问题是,如果我点击首先说出ngOnInit() { this.sub = this.route.params.subscribe(params => { this.param = params['page']; }); console.log(this.param); } 链接,我会在控制台中显示services(这是正确的),但是如果我那么点击services,我什么都没得到。反之亦然。

此外,如果我点击about-us链接,我会home(这很好),然后如果我点击undefinedabout-us我会记录该slug,但是如果我一个接一个地点击它们(按任何顺序),我就不会这样做。

在达到其他路线之前,无法刷新services路线。

另外,如果我点击一个链接(我有任何链接)并且我在控制台中得到了一些东西,如果我一直点击相同的链接我再也没有得到任何东西,我想这是同样的根本问题。

1 个答案:

答案 0 :(得分:0)

您是否尝试过在订阅中移动console.log?这样它会在每次发出一个项目时记录,而不仅仅是在初始化时记录?

ngOnInit() {
    this.sub = this.route.params.subscribe(params => {
        this.param = params['page']; 
        console.log(this.param);
     });
}

我尝试过类似于我的应用程序,

this.route.params
  .subscribe(
    (params: Params) => {
      this.id = params['id'];
      this.preptestDetails  = this.ptService.getPreptest(this.id);
      console.log('inside subscribe: ' + this.id);
    }
  );
console.log('outside subscribe: ' + this.id);

这是控制台日志。请注意,subscribe之外的日志只会触发一次,而内部的日志每次都会触发。

  

内部订阅:9

     

外部订阅:10

     

内部订阅:11

     

内部订阅:23

     

内部订阅:3

     

里面订阅:5

     

内部订阅:6

     

内部订阅:7

     

内部订阅:4