私は角度2で働いています。私はそれに直面している、私は親からの子コンポーネントの関数を呼び出しています。子関数は最初にhtmlを読み込む私のデータセットを更新します。しかし、私は同じhtmlに立って、その関数をもう一度呼び出すと、そのデータセットに新しいデータがロードされているがそのhtmlはロードされていないことをコンソールに表示します。 全シナリオ: 私は自分のヘッダーセクションに検索バーを持っています。 whereは結果ページにリダイレクトされ、クエリデータを表示する関数を呼び出します。しかし、私はすでに一度クエリを検索し、結果ページに立っています。新しいデータクエリが関数を再度呼び出し、データセットが更新されます。コンポーネントはそのデータセットに従ってhtmlをリロードしません。どのように私はそれをリロードすることができますか? 提案がありますか? ここはコードサンプルです。 私header.ts更新後にDOMが更新されないのはなぜですか?
Search(){
localStorage.setItem('val',JSON.stringify(this.query));
this.router.navigate(['/results']);
this.mobiles.ngOnInit();
}
}
とresuls.ts
ngOnInit() {
this.query=JSON.parse(localStorage.getItem('val'));
alert(this.query)
this.httpService.searchGeneric(this.query,1).subscribe(
data => {
this.Getspecs = data;
this.count=data['totalItems'];
this.ref.detectChanges();
this.ref.reattach();
console.log(data)
}
);
は、新たな変化が結果コンポーネントのHTMLで表示されない理由は?誰にでもこれについてのアイデアはありますか?助けが必要でした。ありがとう。
結果ページで関数を呼び出した後、再度同じページにルーティングし直していますか?あなたがコンポーネント上にいて、同じコンポーネントをもう一度リロードすると、Angularはバインディングをリフレッシュしません。既に読み込まれたコンポーネントのバインドを再度リフレッシュしないというパフォーマンスの向上です。 –
[https://angular.io/guide/router#observable-params-and-component-reuse]を読んで、あなたが望むものを達成する方法を示します。 –