【问题标题】:Angular2 : Call method/ngoninit when parameter of route changesAngular2:当路由参数改变时调用方法/ngoninit
【发布时间】:2017-05-09 02:54:12
【问题描述】:

现在我正在做一个网上商店,在我的主页上我有一个类别的下拉列表让我们说父猫 A,子猫 B 和 C。

Cat A、B 和 C 均由 1 个组件 CatAComponent 表示。当我第一次进入其中一只猫时,我的 ngoninit 被调用并且页面显示它需要显示的内容。

当我想点击另一个子猫时,我仍然在同一个组件上,但只有一个路由参数发生变化(例如我在 localhost:123/CatA/CatB 上,现在我在 localhost 上: 123/CatA/CatC,仅更改了一个参数,因此不会调用 ngOnInit,也不会调用我的更新方法)。

有什么办法可以解决这个问题吗?我无法在我的视图文件中放置(单击)方法来引用该方法,类别的菜单在另一个视图组件中。

我可以在仅更改参数时调用 NgOnInit 吗?

【问题讨论】:

    标签: angular typescript ngoninit


    【解决方案1】:

    您必须订阅ActivatedRoute服务如下:

    //组件

    import { Component, OnInit } from '@angular/core';
    import { ActivatedRoute, Params }   from '@angular/router';
    
    export class YourComponent {
      constructor(
        private route: ActivatedRoute      
      ) {}
    
      ngOnInit(): void {
        this.route.params.subscribe((params: Params) => {
          console.log(params); 
          // this will be called every time route changes
          // so you can perform your functionality here
    
        });
      }
    }
    

    【讨论】:

    • 我很傻。我已经订阅了参数,把我的更新方法放在外面而不是里面。谢谢工作完美
    • 这个答案涉及参数,而不是整个路线。路线请到这里stackoverflow.com/questions/42453375/…
    • 您还应该将订阅保存在实例变量中并在 ngOnDestroy 方法中取消订阅。
    猜你喜欢
    • 2018-12-13
    • 2016-10-25
    • 2017-07-30
    • 2017-12-03
    • 1970-01-01
    • 2017-07-13
    • 2018-01-08
    • 2016-08-21
    • 1970-01-01
    相关资源
    最近更新 更多