首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Angular 6中为数据库中的每个条目生成唯一的URL

在Angular 6中为数据库中的每个条目生成唯一的URL
EN

Stack Overflow用户
提问于 2019-01-13 02:09:11
回答 2查看 882关注 0票数 0

我的MongoDB中有一堆数据,我的应用程序使用MEAN堆栈。所以我有一个搜索,用户可以在数据库中搜索条目,让我们以一家医院为例。用户可以指定医院的选项,然后系统会显示符合条件的医院。因此,如果用户现在点击一家医院,他们将获得该医院的全部详细信息。在额外的页面/组件上显示开放时间、停车可能性等。

因此,我现在想为这个特定的医院创建一个唯一的链接,这样用户就可以将它保存在他们想要的任何地方,并在下次访问它时不使用搜索。

我想要这样的-> http://mywebsite.com/hospital/california/alameda-hospital

我该如何解决这个问题呢?我的组件基于一个通常保存医院信息的@Input()。所以现在,当用户输入URL时,我需要请求我的数据库,获取所需的信息并将它们填充到我的object hospitalDetails: Object中,或者什么是正确的方式?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-13 02:21:26

使用ngOnInit中的路由参数,并订阅更改,更新components值:

代码语言:javascript
复制
constructor( private hospitalService: HospitalService, private route: ActivatedRoute ) // lets say you get the hospital info from the hospitalService via a get
ngOnInit(){
  this.route.params.subscribe(params => {
      this.hospitalId = params.hospitalId
      this.hospitalService.getHospital(this.hospitalId).subscribe( hospital => {
       this.hospital = hospital
      }
  }
}

在定义路由的路由器中:

代码语言:javascript
复制
{ path: "hospital/:state/:hospitalId", component: HospitalDetailsComponent }

这定义了随后可以在route.params订阅中访问的参数。

我只会使用hospitalId作为通用标识符,但是您可以将州和医院名称组合在一起来完成相同的事情。

编辑:您仍然可以在医院详细信息中使用@Input装饰器。该组件可以作为模板组件(其中使用@input )或在路由器插座替换(其中路由器直接指向它)中工作。完全相同的代码将适用于这两种情况。我一直在使用这个模式。

票数 2
EN

Stack Overflow用户

发布于 2021-02-23 03:43:03

我更喜欢“保持简单”的常量打字。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54162477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档