Angular 如何设置activatedRouter只运行一次?

Angular 如何设置activatedRouter只运行一次?,angular,Angular,我尝试在url中以字符串的形式获取数据,并尝试使用ActivateRoute来完成此任务 以下是我的应用程序组件: this.activatedRoute.queryParams.subscribe((value)=>{ this.id=parseInt(value['name']); this.userId = this.id; }); 在console.info(this.id)之后:NaN-->“12345678” 但我只需要12345678 也许它需要

我尝试在url中以字符串的形式获取数据,并尝试使用ActivateRoute来完成此任务

以下是我的应用程序组件:

  this.activatedRoute.queryParams.subscribe((value)=>{
    this.id=parseInt(value['name']);

    this.userId = this.id;

  });
在console.info(this.id)之后:NaN-->“12345678”

但我只需要12345678

也许它需要设置一些超时


我尝试将(this.id)推入数组,我以为我可以执行数组[1]:NaN,数组[2]:'12345678',但失败。

我猜这是在
ngOnInit
中设置的。如果视图更改或数据更改,它会运行多次。。。还有很多其他原因。我建议检查一下
id
,然后打电话。此外,如果您不想在以后查看数据中的更改,请取消订阅

if (!this.id) {
    this.activatedRoute.queryParams.subscribe((value) => {
        this.id = parseInt(value['name']);

        this.userId = this.id;

    }).unsubscribe();
}
给你:

this.id = parseInt(this.activatedRoute.snapshot.queryParams.name);
如果确实只需要第一个值,也可以使用运算符来实现这一点。否则,请使用

this.activatedRoute.queryParams
.烟斗(
第一((值)=>value['name']和&value['name']。长度>0)
)
.订阅((值)=>{
this.id=parseInt(值['name']);
this.userId=this.id;
});

您不应该在回拨中取消订阅吗?此外,如果您现在需要一些VLUE,您应该使用路由快照,而不是异步订阅只需给我NaN,id已消失=。=i guse onit在页面启动时不捕获url,因此返回NaN,在它最终捕获url之后,再次返回数据?????