angular4--参数快照和参数订阅

angular的click事件,可以写成

<input type="button" value="商品详情" (click)="toProductDetails();">

对应的页面跳转可以写成

export class AppComponent {
  title = 'router';

  constructor(private router:Router) {
  }

  toProductDetails() {
    this.router.navigate(['/product'])
  }
}

navigate导航可以添加参数变成 this.router.navigate(['/product',2018]),从而在点击btn的时候获取参数,如下图所示

但是会出一个问题,点击商品详情btn的时候显示为2018,但是点击product本来显示的不是2018,但是还是显示了2018,这个是为什么呢?

home component 路由到商品详情组件的时候,在它被创建的时候,他的构造方法会被调用,然后它的ngOnInit的方法会被调用一次,但是当我们从商品详情组件路由到商品详情组件的时候,由于已经被创建了,所以他不会再次被创建,不会被再次创建的话,这个ngOInit的方法,所以这个product id属性依然保持着,第一次被创建时所赋予的,解决这个问题的方法就叫做参数订阅,我们现在使用的这种方式,叫做参数快照--snapshot,参数快照就是这个,这是快照的意思。

现在我们把这个方法都是,方式改成参数订阅!

ngOnInit() {
    this.routeInfo.params.subscribe((params:Params) => this.productId = params["id"]);
    //this.productId = this.routeInfo.snapshot.params["id"];
  }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值