ChangeDetection
Angular2 は、クリック イベントの後をトリガーしません。以下のコード スニペットは、あるコンポーネントから別のコンポーネントにデータを取得するためのものです。
onClickEvent
(click)="$event.preventDefault(); setApartmentObject(FlatObject)";
アパートの概要コンポーネント
constructor(private _apart:ApartmentService) {}
setApartmentObject(flat:ApartmentObject) {
this._apart.setApartmentDetails(flat);
}
アパートサービス
Injectable()
export class ApartmentService {
apartmentDetails:ApartmentObject
getApartmentDetails():Observable<ApartmentObject> {
return Observable.create((observer) => {
observer.next(this.apartmentDetails);
observer.complete();
});
}
setApartmentDetails(value:ApartmentObject) {
this.apartmentDetails = value;
}
}
ApartmentDetailComponent
constructor(private _apart:ApartmentService)
get apartmentDetails() {
this._apart.getApartmentDetails().subscribe(data => {
this._apartmentDetails = data;
});
return this._apartmentDetails;
}
HTMLファイル内
<p><strong>{{apartmentDetails.name || 'Musterwohnung'}}</strong></p>
また、イベントエミッターを使用してこの問題を修正しようとしましたが、成功しませんでした。次のダーティ フィックスのみが機能します。
constructor(private _ref:ChangeDetectorRef) {
this._ref.detach();
setInterval(() => {
this._ref.detectChanges();
}, 300);
}