https://www.sourcebaran.com/learn/angular2_lifecycle_hooks/