从网址路径读取变量

时间:2019-04-19 18:51:45

标签: angular angular6 angular2-routing

我正在尝试从Angular的URL中读取一个变量。

我的路线上有这个

const routes: Routes = [
  { path: ':page', component: BlogComponent}
];

,这在我的博客组件构造函数中。

this.route.paramMap.subscribe(params => {
  const page = params.params.page;
  cacheService
    .getAllPostIds()
    .subscribe(postIds => this.loadPage(cacheService, postIds, page)
  );
});

这在有参数的情况下有效,即www.url.com/1返回page = 1。

如果网址后没有任何内容(仅www.url.com),则从不触发路由订阅。这是订阅url变量和更改的正确方法吗?如果不是,应该怎么做;如果是的话,即使只有空白的/

,我也要如何使它起作用?

2 个答案:

答案 0 :(得分:0)

用2条路线解决了它。

const routes: Routes = [
  { path: '', component: BlogComponent, pathMatch: 'full' },
  { path: ':page', component: BlogComponent, pathMatch: 'full' },
];

和类似这样的构造函数:

constructor(private cacheService: CacheService, private route: ActivatedRoute) {
  this.route.paramMap.subscribe(params => {
    let page = params.params.page;
    if (page == null){
      page = 1;
    }
    console.log('page: ' + page);
    cacheService
      .getAllPostIds()
      .subscribe(postIds => this.loadPage(cacheService, postIds, params.params.page)
    );
  });
}

在没有:page的参数的情况下,原始路径没有被击中,然后对其进行了添加,以便在没有页面的情况下构造函数默认为1。

不确定这是否是最好的方法。

答案 1 :(得分:0)

我正在使用波纹管代码来反应性地获取路线参数。

constructor ( private route: ActivatedRoute) {}

ngOnInit() {

this.route.params.subscribe(
    (params) => {
        this.page = params[‘page’];
    }
  );
}