0

angular URLのクエリパラメーターに基づいてアクションを決定するシナリオがあります。

たとえば、URL が である場合localhost:4200/token=abcはいくつかのタスクを実行する必要があり、URL が である場合は別のlocalhost:4200ことを行う必要があります。このロジックをngOnInit()ofに追加しましたapp component。問題は、初めてコンポーネントをレンダリングするときにクエリ パラメータが空であり、params 値が入力されるまでに時間がかかることです。

コード:

    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
     }
    })
  }

問題は、params が最初は空で、else状態になることです。またその後に行きifます。出力は次のようなものです

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

ルートがパラメーターで適切に初期化されているかどうかを確認してから続行するにはどうすればよいですか?

PS: Next.js で同様のことを見つけましたが、Angular でこれを行うにはどうすればよいですか?

4

1 に答える 1