0

我有一个场景,我根据角度 url 的查询参数决定操作。

例如,如果 url 是localhost:4200/token=abc我需要做一些任务,如果 url 是localhost:4200那么我需要做其他事情。我ngOnInit()app component. 问题是,第一次渲染组件时查询参数为空,并且需要一段时间才能输入参数值。

代码:

    constructor(private route: ActivatedRoute,private router:Router){}
    ngOnInit(): void {

    this.route.queryParams.subscribe((params: any)=>{
    console.log("params 1:",params);
    if(Object.keys(params).length){ //If there are query parameters 
          console.log("If exectued",params);
         //do Something 
    }
    else{
        console.log("Else exectued",params);
        //do Something else
     }
    })
  }

问题是参数最初是空的,它进入else条件。之后又去if了。输出类似于

params 1: {}
Else executed > {} 
If executed > {token:abc}

如何检查路由是否已使用参数正确初始化然后继续?

PS:我在 Next.js 中发现了类似的东西,但是如何在 Angular 中做到这一点?

4

1 回答 1

0

为什么您不尝试仅使用“params”(而不是 queryParams)来激活 ActivatedRoute ?...我真的不知道它是否有不同的行为:


ngOnInit(): void {
    this.activatedRoute.params.subscribe((params: any)=>{
    console.log("params 1:",params);
    if(Object.keys(params).length){ //If there are query parameters 
          console.log("If exectued",params);
         //do Something 
    }
    else{
        console.log("Else exectued",params);
        //do Something else
     }
    })
  }
于 2021-12-22T17:01:41.527 回答