を使用してあるコンポーネントから別のコンポーネントに移動しようとしています:
this.router.navigate(['/path/'], '_blank');
問題は、私がナビゲートしているコンポーネントがすでに作成されており、ページに戻るときにそのngOnInitメソッドが実行されないことです。ページに表示されているデータを更新しようとしています。これは、ターゲットコンポーネントのngOnInit関数にあります。
this.sub = this._DataService.getData().subscribe(data=> {
this.data= data;
});
ナビゲーションを行うときにページ上のデータが常に更新されることをターゲットコンポーネントに伝えるにはどうすればよいですか?
Ag-Gridを使用してデータをテーブルに表示しています。 NgOnInit関数で:
this.gridOptions.rowData = this.data;
私がもともと持っているコンポーネントは、新しいオブジェクトを追加するためのフォームです。そのオブジェクトを送信すると、グリッドにリダイレクトされ、新しいオブジェクトが表示されます。そのため、グリッドはデータを更新する必要がありますが、何らかの理由で、ナビゲーションではなくグリッドのコンテキストメニューアクションを使用して手動で更新した場合にのみ更新されます。
フォームの送信関数は次のようになります。
onSubmit(data) {
this._DataService.addData(data.value).subscribe();
this.router.navigate(['/data/']);
}
同じルートに移動し、パラメーター値のみが変更された場合は、初期化コードをconstructor
から移動してconstructor
から呼び出し、ルートパラメーターが変更されたときに:
constructor(private route:ActivatedRoute) {
route.params.subscribe(val => this.initialize())
}
OnSubmit関数を次のように変更して修正しました。
onSubmit(data) {
this._DataService.addData(data.value).subscribe(data => {
this.router.navigate(['/path]);
});
}
この質問のおかげで: Angular2-送信後のリダイレクトに更新されたデータが表示されない
リダイレクトコンポーネントを実装しました
this.router.navigate(['/ redirect /'、window.location.pathname]);