tns-template-master-detail-kinvey-ng
Version:
Master-detail interface to display collection of items from Kinvey and inspect and edit selected item properties.
72 lines (63 loc) • 2.99 kB
text/typescript
import { Component, OnInit } from "@angular/core";
import { PageRoute, RouterExtensions } from "nativescript-angular/router";
import { switchMap } from "rxjs/operators";
import { Car } from "../shared/car.model";
import { CarService } from "../shared/car.service";
/* ***********************************************************
* This is the item details component in the master-detail structure.
* This component retrieves the passed parameter from the master list component,
* finds the data item by this parameter and displays the detailed data item information.
*************************************************************/
({
selector: "CarDetail",
templateUrl: "./car-detail.component.html"
})
export class CarDetailComponent implements OnInit {
private _car: Car;
constructor(
private _carService: CarService,
private _pageRoute: PageRoute,
private _routerExtensions: RouterExtensions
) { }
/* ***********************************************************
* Use the "ngOnInit" handler to get the data item id parameter passed through navigation.
* Get the data item details from the data service using this id and assign it to the
* private property that holds it inside the component.
*************************************************************/
ngOnInit(): void {
/* ***********************************************************
* Learn more about how to get navigation parameters in this documentation article:
* http://docs.nativescript.org/angular/core-concepts/angular-navigation.html#passing-parameter
*************************************************************/
this._pageRoute.activatedRoute
.pipe(switchMap((activatedRoute) => activatedRoute.params))
.forEach((params) => {
const carId = params.id;
this._car = this._carService.getCarById(carId);
});
}
get car(): Car {
return this._car;
}
/* ***********************************************************
* The back button is essential for a master-detail feature.
*************************************************************/
onBackButtonTap(): void {
this._routerExtensions.backToPreviousPage();
}
/* ***********************************************************
* The master-detail template comes with an example of an item edit page.
* Check out the edit page in the /cars/car-detail-edit folder.
*************************************************************/
onEditButtonTap(): void {
this._routerExtensions.navigate(["/cars/car-detail-edit", this._car.id],
{
animated: true,
transition: {
name: "slideTop",
duration: 200,
curve: "ease"
}
});
}
}