我有一个包含3个页面的超小型网站,home
,about us
和services
,因此网址为http://localhost:4200
/,http://localhost:4200/about-us
和{{ 1}}
我有一个http://localhost:4200/services
我想要控制日志PagesComponent
,所以根目录的空字符串(或者我现在得到的未定义,这很好),而另一个2时候我单击导航栏中的各自链接,我希望控制日志url slugs
和about-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
(这很好),然后如果我点击undefined
或about-us
我会记录该slug,但是如果我一个接一个地点击它们(按任何顺序),我就不会这样做。
在达到其他路线之前,无法刷新services
路线。
另外,如果我点击一个链接(我有任何链接)并且我在控制台中得到了一些东西,如果我一直点击相同的链接我再也没有得到任何东西,我想这是同样的根本问题。
答案 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