将博客URL从id更改为title(Contentful& Angular5)

时间:2018-05-16 11:28:03

标签: javascript angular typescript angular5 contentful

我正在使用Contentful和Angular 5创建一个应用程序。它一切正常,但点击博客时的URL使用/ blog / id,我需要它/ blog / title或/ blog / urlslug。这就是它的样子:

http://localhost:4200/blog/Q4YkPptlwAQ0wCIo4oAcI

路由按如下方式完成:

  getOneBlog(blogID): Promise<Entry<any>>{
    return this.client.getEntries(Object.assign({
      content_type: 'blog'
    }, {'sys.id': blogID}))
    .then(res => res.items[0]);
  }

  goToBlogDetailsPage(blogId) {

    this.router.navigate(['/blog', blogId]);
  }

和:

  {path: 'blog/:id', component: BlogDetailsPageComponent}
有没有人以前处理过这个?我在内容模型中添加了一个url slug到我的内容模型,但是我不知道如何在其中一个函数中访问url slug。

1 个答案:

答案 0 :(得分:0)

您可以Location from @angular/common更改带有样式值的网址。

例如,在您的组件中,加载博客文章后,您可以在ID之后添加标题,如下所示:

this._location.go(this.blogTitle);

你会有一个像http://localhost:4200/blog/Q4YkPptlwAQ0wCIo4oAcI/someBlogTitle这样的网址。

Here is an stackblitz example for location.