ホームページ > 記事 > ウェブフロントエンド > Angular ルーティングにおける navigateByUrl と navigate の違いと共通点の簡単な分析
この記事では、Angular ルーティングの navigateByUrl と navigate を比較し、その違いと共通点を確認します。
import { Router, ActivatedRoute } from '@angular/router'; export class xxx{ constructor(private router: Router, private route: ActivatedRoute){} }
[関連チュートリアルの推奨事項: "angular チュートリアル" ]
navigateByUrl(url: string | UrlTree, extras: NavigationExtras = { skipLocationChange: false }): Promise<boolean>
最初のパラメータは == 絶対パス == の文字列である必要があります。
this.router.navigateByUrl('/home');
受け取った最初のパラメータは異なりますが、2 番目のパラメータは同じです。
navigate(commands: any[], extras: NavigationExtras = { skipLocationChange: false }): Promise<boolean>
最初のパラメータは配列です
this.router.navigate(['home', 'demo'])
その後、解析されたルートは次のようになりますローカルホスト:4200/home/demo
。
現在のルートを基準にして移動できます。
relativeTo
パラメーターを渡すと、受信ルートを基準にしてジャンプできます。たとえば、現在 localhost:4200/home
にある場合、
this.router.navigate(['demo'], {relativeTo: this.route})
がジャンプした後のアドレスは localhost:4200/home/demo
です。
ただし、'demo'
が '/demo'
と記述されている場合、受信ルートは機能せず、ルート ルートがナビゲーションに使用されます。渡されない場合、ルート ルート (localhost:4200) がデフォルトでナビゲーションに使用されます。
interface NavigationExtras { relativeTo?: ActivatedRoute | null queryParams?: Params | null fragment?: string preserveQueryParams?: boolean queryParamsHandling?: QueryParamsHandling | null preserveFragment?: boolean skipLocationChange?: boolean replaceUrl?: boolean state?: {...} }
ナビゲーションを例に挙げます
パラメータを渡すこの方法では、localhost:4200/demo?id=1
##A コンポーネントはパラメータを渡します
this.router.navigate(['demo'], {queryParams: {id: 1} , relativeTo: this.route})
B コンポーネントはパラメータを受け取ります
activatedRoute.params
import { ActivatedRoute } from '@angular/router'; constructor(private activatedRoute: ActivatedRoute) { this.activatedRoute.params.subscribe((param) => { console.log('组件里面的param', param);// {id :1} }); }
activatedRoute.queryParams# を使用します
##<pre class="brush:js;toolbar:false;">import { ActivatedRoute } from &#39;@angular/router&#39;;
constructor(private activatedRoute: ActivatedRoute) {
this.activatedRoute.queryParams.subscribe((param) => {
console.log(&#39;组件里面的queryParams&#39;, param); // {id :1}
});
}</pre>
状態を介したパラメータの受け渡しimport { Component, Input } from '@angular/core'; import { Router, NavigationExtras } from '@angular/router'; @Component({ selector: 'a-component', template: ` <button (click)="test()">Test</button> `, }) export class AComponent { constructor(private router: Router){} test(){ const navigationExtras: NavigationExtras = {state: {id: 1}}; this.router.navigate(['b'], navigationExtras); } }
B コンポーネントはパラメータを受け取ります
import { Component } from '@angular/core'; import { Router } from '@angular/router'; @Component({ selector: 'b-component' }) export class BComponent { constructor(private router: Router) { const navigation = this.router.getCurrentNavigation(); const state = navigation.extras.state as {id: number}; // state.id 就是传过来的数据 } }
2.2 両方ともコールバックがあります this.router.navigate(['demo']).then(nav => {
console.log(nav); // true: 跳转成功, false 跳转失败
}, err => {
console.log(err) // 发生无措
});
プログラミング関連の知識については、こちらをご覧ください:プログラミング入門
! !
以上がAngular ルーティングにおける navigateByUrl と navigate の違いと共通点の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。