Angularでrouter.navigateByUrlとrouter.navigateを使用する方法
質問
https://angular.io/api/router/RouterLink には、Angular4でユーザーを別のルートに連れて行くリンクを作成する方法の概要が書かれていますが、ユーザーがリンクをクリックするのではなく、プログラム的に同じことを行う方法が見つかりません。
どのように解決するのですか?
URLを指定する
routerLink
ディレクティブはこのように使用されます。
<a [routerLink]="/inbox/33/messages/44">Open Message 44</a>
を使った命令型ナビゲーションの単なるラッパーです。
router
とその
navigateByUrl
メソッドと同じです。
router.navigateByUrl('/inbox/33/messages/44')
というように、ソースからわかるように
export class RouterLink {
...
@HostListener('click')
onClick(): boolean {
...
this.router.navigateByUrl(this.urlTree, extras);
return true;
}
したがって、ユーザーを別のルートに移動させる必要がある場合は、単に
router
を注入し
navigateByUrl
メソッドを使用します。
class MyComponent {
constructor(router: Router) {
this.router.navigateByUrl(...);
}
}
ナビゲート
ルーターにはもう一つの方法があり、それを利用することができます -。 ナビゲート :
router.navigate(['/inbox/33/messages/44'])
違い
使用方法
router.navigateByUrl
を使うのは、ロケーションバーを直接変更するのと同じです。 を直接変更するのと同じです。一方router.navigate
は渡されたコマンドの配列、つまりパッチを現在の URL に適用することで新しい URL を作成します。 コマンドの配列、つまりパッチを現在の URL に適用することによって新しい URL を作成します。この違いを明確にするために、現在の URL が
'/inbox/11/messages/22(popup:compose)'
.この URL で
router.navigateByUrl('/inbox/33/messages/44')
を呼び出すと、結果として'/inbox/33/messages/44'
. しかし、これをrouter.navigate(['/inbox/33/messages/44'])
で呼び出すと、結果的に'/inbox/33/messages/44(popup:compose)'
.
続きを読む 公式ドキュメント .
関連
-
[解決済み] コンストラクタとngOnInitの違いについて
-
[解決済み] Angular HTMLバインディング
-
[解決済み] Angular:*ngClassを使った条件付きクラス
-
[解決済み] NGIf else "の使い方を教えてください。
-
[解決済み] モジュール "@angular-devkit/build-angular" が見つかりませんでした。
-
[解決済み】PromiseとObservablesの違いは何ですか?
-
[解決済み】Angularでルート変更を検出する方法は?
-
[解決済み】Angular - サービスとコンポーネントでパイプを使用する
-
[解決済み] ルーターナビゲートで同じページのngOnInitを呼び出さない
-
[解決済み] Angular2ルートでAngularの方法でパラメータを取得するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] .tsファイルはTypeScriptのコンパイルの一部ですが、使用されていませんという警告を消すには?
-
[解決済み] trackBy` と `ngFor` の使い方
-
[解決済み] angular4 / typescriptでdocument.getElementByIdの置き換え?
-
[解決済み] Angular 2で入力タグのファイルタイプで選択されたファイルをリセットする方法は?
-
[解決済み] FormGroupから単一の値を取得する方法
-
[解決済み] Angular2 DIRECTIVEは要素の既知のプロパティではないので、バインドできません。
-
[解決済み] angular-cli server - APIリクエストを別のサーバーにプロキシする方法は?
-
[解決済み] mat-selectでデフォルトのオプションを設定する
-
[解決済み] 親コンポーネントのangular2呼び出し関数
-
[解決済み] Angular 2 コンポーネントコンストラクタとOnInitの比較 [重複]。