web-dev-qa-db-ja.com

Angular router.navigateにパラメーターを追加する

まず第一に、これが正しい方法であるかどうか、私が望んでいることを達成するために確信がありません。以下のようなエクスポートバインディングをrouter.navigate()-methodに追加しようとしています:

<call [caller]="caller"></call>

問題は、ディレクティブを使用しないで、代わりにルーターを介して処理することです。

acceptCall() {
   this.router.navigate(["call"]);
}

AcceptCall()メソッドの最初の例と同じエクスポートバインディングを実現するにはどうすればよいですか?私はすでにInput()変数を追加しており、次のようなqueryParamsでそれを試しました:

@Input() caller: Caller;
acceptCall(caller) {
    this.router.navigate(["call"], {queryParams: caller});
}

しかし、これは機能しません。

10
reveN

私のコメントに従って、あなたは:

1-ルートを再定義する

{path: 'call/:caller', component: MyComponent }

2-ナビゲーションを変更親コンポーネント内

this.router.navigate(["call", caller]);

3-子コンポーネント内、パラメーターを取得

import { ActivatedRoute } from '@angular/router';
// code until ...
myParam: string;
constructor(private route: ActivatedRoute) {}
// code until ...
ngOnInit() {
    this.route.params.subscribe((params: Params) => this.myParam = params['caller']);
}
16
user4676340