javascript - 发送到另一个组件时更新值 Angular 2

标签 javascript angular angular-components

我正在使用 routerLink 通过 URL 将 id 从带有餐厅列表的组件发送到另一个组件

[RouterLink] = "['../ restaurant-menu', restaurant.id]"

在另一个组件中,我使用 id 如下

ngOnInit () {
  this.restaurantId = this.router.snapshot.params ['id']
  this.getRestaurantMenu (this.restaurantId)
}

restaurantMenu: void []

getRestaurantMenu (id): void {
this.RestaurantsService.getRestaurantMenu (id)
    .subscribe (
        restaurantMenu => this.restaurantMenu = restaurantMenu,
        err => {
            console.log (err);
    });
}

第一次单击一家餐厅并加载其菜单时,一切正常,当我返回餐厅列表并单击另一家餐厅时,问题就开始了,应用程序加载了我单击的第一家餐厅的菜单,我必须手动刷新浏览器以加载正确的菜单。

我怀疑调用函数 getRestaurantMenu() 后是否可以更新 id,因为无论我多少次离开并进入不同的餐厅,它总是会显示第一家餐厅的菜单,但我也尝试在HTML:

<P> {{restaurantId}} </ p>

显示的 ID 号是正确的。我尝试了不同的方法来传递该 id,但结果是相同的,可能是什么问题?谢谢

最佳答案

也许尝试不使用snapshot,而是使用ActivatedRoute:

import { ActivatedRoute, Params } from "@angular/router";

...

constructor(private route: ActivatedRoute) {  }

...

ngOnInit() {

  // (+)param['id'] to convert string to number
  this.route.params
    .switchMap((param: Params) => this.RestaurantsService.getRestaurantMenu(+param['id']))
    .subscribe(
      restaurantMenu => this.restaurantMenu = restaurantMenu,
      err => console.log (err)
    );
}

关于javascript - 发送到另一个组件时更新值 Angular 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40984652/

相关文章:

javascript - 如何使用 typescript 映射和过滤数组上的不同值?

Angular 2 : How to refresh resolver dependent components?

html - AngularJS - 将值传递给组件

javascript - debug.activeDebugSession API 在 vscode 上返回未定义

javascript - 使用 Backbone.Router 记住带有 url hash 的复杂页面状态

angular - Ionic 3 无法在我的自定义组件中使用 ion-* 组件

angular - ngIf 不使用 ng-template

css - 如何从父组件的 CSS 文件中设置子组件的样式?

javascript - 将前一个小时和后一个小时添加到数组中

javascript - 当不存在构造函数时, `new` 调用的结果。 ES6 类