web-dev-qa-db-ja.com

ルーターを実行した後にコンポーネントを更新します。

を使用してあるコンポーネントから別のコンポーネントに移動しようとしています:

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/']);
}
8
merlino

同じルートに移動し、パラメーター値のみが変更された場合は、初期化コードをconstructorから移動してconstructorから呼び出し、ルートパラメーターが変更されたときに:

constructor(private route:ActivatedRoute) {
  route.params.subscribe(val => this.initialize())
}
7

OnSubmit関数を次のように変更して修正しました。

  onSubmit(data) {
    this._DataService.addData(data.value).subscribe(data => {
        this.router.navigate(['/path]);
    });
}

この質問のおかげで: Angular2-送信後のリダイレクトに更新されたデータが表示されない

2
merlino

リダイレクトコンポーネントを実装しました

this.router.navigate(['/ redirect /'、window.location.pathname]);

0
ueman