首页 > 解决方案 > 从 URL 路径读取变量

问题描述

我正在尝试从 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。

如果 url 之后没有任何内容(只是www.url.com),那么这永远不会触发路由订阅。这是订阅 url 变量和更改的正确方法吗,如果不是,我应该怎么做,如果是,即使只有一个空白 url,我如何使它工作/

标签: angularangular6angular2-routing

解决方案


用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。

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


推荐阅读