【问题标题】:Retrieving Query Parameters inside a Component检索组件内的查询参数
【发布时间】:2016-10-20 20:49:34
【问题描述】:

假设我有一个带有以下元素的 HTML 模板。

<a [routerLink]="['/final', {issue_id: 2356254}]">SUBMIT</a>

单击此超链接将生成如下 URL:

http://localhost:3000/final;issue_id=2356254

我正在尝试在组件的构造函数中访问此查询参数。

export class FinalComponent {
    constructor(private route: ActivatedRoute){
        this.issueId = route.params._value.issue_id;
        console.log(this.issueId);
    }
}

到目前为止这有效,但我知道这不是正确的方法。在 Angular 2 组件中访问查询参数的正确方法是什么?

【问题讨论】:

    标签: angular


    【解决方案1】:

    使用ActivatedRoute 是一个好的开始。 您可以订阅params 属性,因为它是Observable

    constructor(private route: ActivatedRoute) { }
    
    ngOnInit() {
      this.route.params.subscribe(params => {
        // access route params
        console.log(params['id']);
      });
    }
    

    GitHub 上的示例

    https://github.com/Angular2Buch/book-monkey2/blob/master/src/app/book-monkey/iteration-4/http/book-details/book-details.component.ts#L23

    route.snapshot

    如果您对参数的更改不感兴趣,您可以简单地使用this.route.snapshot.params。所以你不必处理 Observables。

    样本

    constructor(route: ActivatedRoute) {
      let id = route.snapshot.params['id];
    }
    

    【讨论】:

    • 成功了!我浏览了 Angular 文档并找到了这段代码。 this.route.params.forEach((params: Params) => { this.issueId = +params['issue_id']; });但我认为你的方法要好得多。
    • 对我不起作用,我得到:aot/app/app.component.ngfactory.ts(45,30):错误 TS2346:提供的参数与调用目标的任何签名都不匹配。
    • @jjj 你有关于这个问题的更多信息吗?代码示例或类似的东西?
    猜你喜欢
    • 1970-01-01
    • 2019-06-01
    • 2019-01-17
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多