我的MongoDB中有一堆数据,我的应用程序使用MEAN堆栈。所以我有一个搜索,用户可以在数据库中搜索条目,让我们以一家医院为例。用户可以指定医院的选项,然后系统会显示符合条件的医院。因此,如果用户现在点击一家医院,他们将获得该医院的全部详细信息。在额外的页面/组件上显示开放时间、停车可能性等。
因此,我现在想为这个特定的医院创建一个唯一的链接,这样用户就可以将它保存在他们想要的任何地方,并在下次访问它时不使用搜索。
我想要这样的-> http://mywebsite.com/hospital/california/alameda-hospital
我该如何解决这个问题呢?我的组件基于一个通常保存医院信息的@Input()。所以现在,当用户输入URL时,我需要请求我的数据库,获取所需的信息并将它们填充到我的object hospitalDetails: Object中,或者什么是正确的方式?
发布于 2019-01-13 02:21:26
使用ngOnInit中的路由参数,并订阅更改,更新components值:
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
}
}
}在定义路由的路由器中:
{ path: "hospital/:state/:hospitalId", component: HospitalDetailsComponent }这定义了随后可以在route.params订阅中访问的参数。
我只会使用hospitalId作为通用标识符,但是您可以将州和医院名称组合在一起来完成相同的事情。
编辑:您仍然可以在医院详细信息中使用@Input装饰器。该组件可以作为模板组件(其中使用@input )或在路由器插座替换(其中路由器直接指向它)中工作。完全相同的代码将适用于这两种情况。我一直在使用这个模式。
发布于 2021-02-23 03:43:03
我更喜欢“保持简单”的常量打字。
https://stackoverflow.com/questions/54162477
复制相似问题