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 でこれを行うにはどうすればよいですか?