首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同时订阅route.queryParams和route.params

同时订阅route.queryParams和route.params
EN

Stack Overflow用户
提问于 2018-11-13 09:48:36
回答 1查看 376关注 0票数 1

我有route.paramsroute.queryParams的下一个网址

代码语言:javascript
复制
.../search/VALUE1?method=VALUE2

我创造了一条路线

代码语言:javascript
复制
{
  path : 'search/:id',
  component: MyComponent
}

组件

代码语言:javascript
复制
export class MyComponent {
...
constructor(private route: ActivatedRoute) {}
ngOnInit() {
  combineLatest(this.route.queryParams, this.route.params)
    .subscribe([queryParams, params] => {
       console.log(ID:' + params('id') + ',M:' +queryParams('method'));
       // code
    })
}

但是存在一个问题-当用户同时更改主param和query param时,订阅将被调用两次,例如用户调用。

代码语言:javascript
复制
.../search/VALUE1?method=VALUE2
.../search/VALUE3?method=VALUE4

控制台日志

代码语言:javascript
复制
ID:VALUE1,M:VALUE2
ID:VALUE3,M:VALUE2   <-- redundant method call
ID:VALUE3,M:VALUE4

如何同时订阅route.paramsroute.queryParams而只调用一次?

什么尝试了

代码语言:javascript
复制
     private method: string;
//
     ngOnInit() {
       this.route.queryParams.subscribe(
          queryParams => {
             this.method = queryParams['method'];
       });

       this.route.params.subscribe(
          params => {
             console.log(ID:' + params('id') + ',M:' + this.method);
             // code

          }
     }

这件事做得很好。但是,我能确保this.method在订阅时包含正确的值吗?

EN

回答 1

Stack Overflow用户

发布于 2018-11-13 10:20:53

如果你想获得联谊会,你不需要订阅。当两者都改变的时候,下面的那个很好用。

代码语言:javascript
复制
ngOnInit() {

    this.route.queryParams.subscribe( p => {

      console.log("ID :" + this.route.snapshot.params['id'] + ',M:' + p['method'],)

    })
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53278156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档