Click 이벤트가 발생하면 Angular2가 ChangeDetection
을 트리거하지 않습니다. 아래의 코드 스 니펫은 한 구성 요소에서 다른 구성 요소로 데이터를 가져 오는 것입니다.클릭 후 Angular2 변경 화재 감지
는
(click)="$event.preventDefault(); setApartmentObject(FlatObject)";
에게 ApartmentOverviewComponent
constructor(private _apart:ApartmentService) {}
setApartmentObject(flat:ApartmentObject) {
this._apart.setApartmentDetails(flat);
}
ApartmentService
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;
}
을 onClickEvent 나는 또한 eventemitter와 함께이 문제를 해결하기 위해 노력
<p><strong>{{apartmentDetails.name || 'Musterwohnung'}}</strong></p>
HTML 파일에서
0하지만 성공하지. 다음과 같은 더러운 수정 프로그램 만 작동합니다.
constructor(private _ref:ChangeDetectorRef) {
this._ref.detach();
setInterval(() => {
this._ref.detectChanges();
}, 300);
}
나는이 문제를 이해하지 않습니다. 각도 실행 감지가 변경되어이를 방지하고 싶습니까? 아니면 변경 감지가 실행 되길 원하지만 각도가 실행되지 않습니까? –
당신은 어떻게 될 것으로 예상합니까? Angular2가 변경 감지를 실행하지 않는 이유는 무엇이라고 생각하십니까? –
문제는 각도가 ApartmentDetailComponent의 ApartmentOverviewComponent의 한 개체에서 데이터를로드하고 실제 데이터로 다시 렌더링해야한다는 것입니다. ChangeDetection은 트리거하지 않으므로 ApartmentDetailComponent에서 데이터를 가져 오지만 뷰는 다시 렌더링되지 않습니다. 왜 그런지 모르겠습니다. – Zero