Я работаю над приложением Angular, это в основном небольшое приложение, которое отображает пятна для автомобилей, автомобили могут быть в разных регионах (например, в гараже, за пределами гаража) ..
И когда я нажимаю назаметьте, что он меняет цвет на красный, как будто он занят, но я не вижу его, пока не закрою окно и не вернусь снова.
Вот 2 компонента,
one cars-spot-list
- родительский компонент, и car-spot
сам является дочерним компонентом, поскольку он является частью списка.
Итак, что я хочу сделать, так это когда я нажимаю на автомобильное место, я обновляю свою базу данных, когда это место занято, и я хотел бычтобы снова вызвать мой метод getCarSpotsByArea
(), но он находится в parent-component
, поэтому мой вопрос: как я могу вызвать родительский метод из дочернего компонента?
Я мог бы переместить его в service
, но я бы хотел этого избежать.
Вот как это выглядит:
Мой код:
Когда я нажимаю дочерний компонент car-spot
, например, Spot 1, это происходит:
onClick(carSpot: CarSpot) {
this._carSpotService.changeCarSpotState(carSpot).subscribe(
// Successful responses call the first callback.
() => {
// CALL AGAIN SOMEHOW METHOD FROM A PARENT TO REFRESH MY VIEW
// for example: getCarSpotsByArea(carSpot.areaId);
},
(err: HttpErrorResponse) => {
if (err.error instanceof Error) {
console.log('An error occurred:', err.error.message);
} else {
console.log(`Backend returned code ${err.status}, body was: ${err.error}`);
}
}
);
};
}
Родительский компонент: car-spot-list
компонент
getCarSpotsByArea(areaId: string) {
this._carSpotService.getCarSpotsByAreaId(areaId)
.subscribe(
data => {
this.carSpots = data;
},
// Errors will call this callback instead:
(err: HttpErrorResponse) => {
if (err.error instanceof Error) {
// A client-side or network error occurred. Handle it accordingly.
console.log('An error occurred:', err.error.message);
} else {
// The backend returned an unsuccessful response code.
// The response body may contain clues as to what went wrong,
console.log(`Backend returned code ${err.status}, body was: ${JSON.stringify(err.error)}`);
}
}
);