Angular2 не запускает ChangeDetection
после события click. Приведенные ниже фрагменты кода предназначены для передачи данных из одного компонента в другой.
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;
}
}
КвартираДетальКомпонент
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);
}
FlatObject
вsetApartmentObject(FlatObject)"
? Похоже на опечатку. Имена свойств обычно пишутся строчными буквами, а имена типов — прописными. Типы нельзя использовать таким образом в шаблоне. - person Günter Zöchbauer   schedule 22.07.2016