What I Learned Last Week — 2016.09.26

Someone wrote up a great table to show comparison of php types and their results

Link: http://php.net/manual/en/types.comparisons.php

Rest vs. RPC

Phil Sturgeon wrote up a great article in smashing magazine about knowing the difference between a RESTful web service and an RPC api… I’ve been mixing up names apparently.

Link: https://www.smashingmagazine.com/2016/09/understanding-rest-and-rpc-for-http-apis/

Google Maps Shows Gas Prices

Playing around with google maps, i Just found out that some gas stations (Wawa especially) now have gas prices overlaid on them

Angular 2 Child Routing

Angular 2 is my new favorite toy. But it was a bit challenging figuring out child routing… This is where you have a secondary navigation within a component so that the component can have it’s own navigation within itself (changing a part of the screen, not the whole app).

To accomplish this, you need to add a second router-outlet within your child component.

Say we have the following route: /contacts/:group where group is ‘friends’ or ‘enemies’ — we want to show a list of those friends. Now, we want a route /contacts/:group/:friend — where friend, is the id of the friend loaded into a component, we need to setup Child Routes like so:

{ path: 'contact/:group', component: ContactsListComponent, children: [ {path: '', component: EmptyContactComponent}, {path: ':id', component: ContactComponent} ]}

Now, the next challenge, is accessing the parent :group from the child.. that can be done by injecting ActivatedRoute and accessing the parent params like so.

this._activatedRoute.parent.snapshot.params['group']

Angular 2 Routing Events — Use NavigationEnd instead of NavigationStart

When subscribing to router events, so that you can update data on URL change, the tutorials i found online showed something like this..
 this._router.events.filter(event => event instanceof NavigationStart).subscribe(event => {
 While this sometimes works, i found it causes a race condition where the code fires before the navigation has actually completed – causing weird bugs… To solve this, use the NavigationEnd event instead, this will ensure all the navigation is completed before relying on the data for your objects.