私のAngular2アプリケーションでは、UI入力時にWebサービスからデータを取り出すコンポーネントがロードされます。 ユーザー入力が変更されたときにaptSearchComponentをリロードします。新しいデータは入力のサービスベースからフェッチされますが、コンポーネントはリロードされません。角度2はユーザー入力に基づいて現在のコンポーネントをリロードします
入力がheaderComponentにあり、ユーザーがいくつかの検索条件を入力してEnterキーを押すと、データがsharedServiceに渡され、aptSearchComponentにルーティングされ、共有サービスからデータが取得され、結果が表示されます。
headerComponentテンプレートは一番上にあり、aptSearchcomponentテンプレートはその下に表示されます。
@Component({
selector: 'app-header',
template: `
<div class="mdl-textfield__expandable-holder">
<input class="mdl-textfield__input" type="text" id="search" (keyup.enter)="Search($event)">
</div>
`,
})
export class HeaderComponent {
public apartments: Object[];
constructor(private apartmentService: ApartmentService,private router: Router,private sharedService: SharedService) {
this.apartmentService=apartmentService;
this.sharedService=sharedService;
}
Search(event){
this.apartmentService.searchApt2(event.target.value).subscribe(res => {this.sharedService.temp = res
this.router.navigate(['AptSearch'])});
}
}
は、どのように私は基本的にthis.aptDetails内のデータが変更された角度2でコンポーネントをリロードすることができますが、テンプレートはまだ古いデータを示しています。
export class AptSearchComponent implements OnInit {
aptDetails: any;
constructor(private apartmentService: ApartmentService, private sharedService: SharedService,private zone:NgZone) {
this.apartmentService = apartmentService;
}
ngOnInit(){
this.aptDetails = this.sharedService.temp;
JSON.stringify(console.log(this.aptDetails)); //the data here is changed based on input, but the template is not refreshed and I still see the previous result.
}
}
私は(コンストラクタで次のことを試してみました)が、運
this.zone.run(()=>this.aptDetails=this.sharedService.temp);
私はRC4を使用していない、とインポートされませんでpolyfillsています。
本当にコンポーネントをリロードしますか? 'aptDetails'を再ロードするだけです。 –
Apt詳細は、現在のコードでコンソールに再ロードされます。ビューは変更されません。 – user2180794
入力はどこですか?詳細情報を追加してください –