代码之家  ›  专栏  ›  技术社区  ›  Vinnie Saletto

角度5中的ActivateDroute不传递URL参数。思想?

  •  0
  • Vinnie Saletto  · 技术社区  · 8 年前

    我已经在app.component.ts页面上实现了activatedroute。这是一个页面,我有一个红色的退出按钮,它出现在我的应用程序的所有页面上,如预期的那样。

    我跳转到我创建的URL(使用查询字符串),如下所示:

    http://localhost:4200/status?returnString=xyz

    我有一个 private route: ActivatedRoute 在我的构造函数中。在我的 ngOnInit() 我拥有的功能 console.log(this.route.queryParams); . 返回一个对象, ._value 是具有以下属性的对象 returnString: "xyz" 按预期。

    问题是,当我 console.log(this.route.queryParams.returnString) console.log(this.route.queryParams._value) 我得到的是一个没有财产的对象。 {} .

    我的问题是,发生了什么,或者说,我做错了什么?从URL中获取一个我可以在Angular5中使用的参数需要什么?

    2 回复  |  直到 8 年前
        1
  •  2
  •   Narm Rohit    8 年前

    你的问题在于 queryParams 是一个 Observable .

    在你的 ngOnInit() 订阅Observable所需的函数:

    ngOnInit() {
        this.route. queryParams.subscribe(
          params => {//Do something with the params.returnString},
          err => console.log(err)
    );
    }
    

    Official Angular Docs - ActivatedRoute

        2
  •  1
  •   Patrick angularsen    8 年前

    queryParams 是可观察的,因此您应该倾听变化而不是检查值。

    当app.component启动时,该值尚未设置,但当您检查它时,它是。这可能就是你所经历的。

    设置监听器并对更改做出响应

    route.queryParams.subscribe((params: Params) => this.doSomething(params.returnString))
    
    推荐文章