├── .gitignore ├── LICENSE ├── README.md ├── step00a_quick_start_systemjs ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── app.module.js │ ├── app.module.js.map │ ├── app.module.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step00b_quick_start_webpack ├── .gitignore ├── config │ ├── helpers.js │ ├── karma-test-shim.js │ ├── karma.conf.js │ ├── webpack.common.js │ ├── webpack.dev.js │ ├── webpack.prod.js │ └── webpack.test.js ├── karma.conf.js ├── package.json ├── public │ ├── css │ │ └── styles.css │ └── images │ │ └── angular.png ├── readme.md ├── src │ ├── app │ │ ├── app.component.css │ │ ├── app.component.html │ │ └── app.component.ts │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ └── vendor.ts ├── tsconfig.json ├── typings.json ├── typings │ ├── globals │ │ ├── core-js │ │ │ ├── index.d.ts │ │ │ └── typings.json │ │ ├── jasmine │ │ │ ├── index.d.ts │ │ │ └── typings.json │ │ └── node │ │ │ ├── index.d.ts │ │ │ └── typings.json │ └── index.d.ts └── webpack.config.js ├── step01_template_variables ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── app.module.js │ ├── app.module.js.map │ ├── app.module.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step02_arrays ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── app.module.js │ ├── app.module.js.map │ ├── app.module.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step03_events ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── app.module.js │ ├── app.module.js.map │ ├── app.module.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step04_binding_properties ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step05_component_child ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── childOne.component.js │ ├── childOne.component.js.map │ ├── childOne.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step06_component_tree ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── childOne.component.js │ ├── childOne.component.js.map │ ├── childOne.component.ts │ ├── childTwo.component.js │ ├── childTwo.component.js.map │ ├── childTwo.component.ts │ ├── main.js │ ├── main.js.map │ ├── main.ts │ ├── subChild.component.js │ ├── subChild.component.js.map │ └── subChild.component.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step07_component_child_input ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── childOne.component.js │ ├── childOne.component.js.map │ ├── childOne.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step08_component_child_dynamic_input ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── childOne.component.js │ ├── childOne.component.js.map │ ├── childOne.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step09_component_host ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── childOne.component.js │ ├── childOne.component.js.map │ ├── childOne.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step10_component_list ├── .gitignore ├── app │ ├── Pair.js │ ├── Pair.js.map │ ├── Pair.ts │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ ├── main.ts │ ├── pair.component.js │ ├── pair.component.js.map │ └── pair.component.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step11_component_reusable ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── image.component.js │ ├── image.component.js.map │ ├── image.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── assets │ └── pakistan.png ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step12_ngIf ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step13_ngSwitch ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step14_ngStyle ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step15_ngClass ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step16_ngClass_Dynamic ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md └── tsconfig.json ├── step16_ngClass_dynamic ├── styles.css ├── systemjs.config.js ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step17_ngClass_array ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step18_ngFor ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step19_ngFor_index ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step20_ngNonBindable ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step21_forms_basic ├── .gitignore ├── app │ ├── Hero.js │ ├── Hero.js.map │ ├── Hero.ts │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── heroform.component.js │ ├── heroform.component.js.map │ ├── heroform.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step22_forms_track_state ├── .gitignore ├── app │ ├── Hero.js │ ├── Hero.js.map │ ├── Hero.ts │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── heroform.component.js │ ├── heroform.component.js.map │ ├── heroform.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step23_forms_select ├── .gitignore ├── app │ ├── Hero.js │ ├── Hero.js.map │ ├── Hero.ts │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── heroform.component.js │ ├── heroform.component.js.map │ ├── heroform.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step24_forms_validation ├── .gitignore ├── app │ ├── Hero.js │ ├── Hero.js.map │ ├── Hero.ts │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── heroform.component.js │ ├── heroform.component.js.map │ ├── heroform.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step25_forms_validation_custom ├── .gitignore ├── app │ ├── app.component.css │ ├── app.component.html │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── equal-validator.directive.js │ ├── equal-validator.directive.js.map │ ├── equal-validator.directive.ts │ ├── main.js │ ├── main.js.map │ ├── main.ts │ ├── user.interface.js │ ├── user.interface.js.map │ └── user.interface.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step26_routing ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── app.routes.js │ ├── app.routes.js.map │ ├── app.routes.ts │ ├── main.js │ ├── main.js.map │ ├── main.ts │ ├── page1.component.js │ ├── page1.component.js.map │ ├── page1.component.ts │ ├── page2.component.js │ ├── page2.component.js.map │ └── page2.component.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step27_routing_parameters ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── app.routes.js │ ├── app.routes.js.map │ ├── app.routes.ts │ ├── main.js │ ├── main.js.map │ ├── main.ts │ ├── page1.component.js │ ├── page1.component.js.map │ ├── page1.component.ts │ ├── page2.component.js │ ├── page2.component.js.map │ └── page2.component.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step28_routing_parameters_dynamic ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── app.routes.js │ ├── app.routes.js.map │ ├── app.routes.ts │ ├── main.js │ ├── main.js.map │ ├── main.ts │ ├── page1.component.js │ ├── page1.component.js.map │ ├── page1.component.ts │ ├── page2.component.js │ ├── page2.component.js.map │ └── page2.component.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step29_routing_merge ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── app.routes.js │ ├── app.routes.js.map │ ├── app.routes.ts │ ├── main.js │ ├── main.js.map │ ├── main.ts │ ├── page1.component.js │ ├── page1.component.js.map │ ├── page1.component.ts │ └── page2 │ │ ├── page2.component.js │ │ ├── page2.component.js.map │ │ ├── page2.component.ts │ │ ├── page2.routes.js │ │ ├── page2.routes.js.map │ │ └── page2.routes.ts ├── index.html ├── npm-debug.log ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step30_routing_child ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── app.routes.js │ ├── app.routes.js.map │ ├── app.routes.ts │ ├── main.js │ ├── main.js.map │ ├── main.ts │ ├── page1.component.js │ ├── page1.component.js.map │ ├── page1.component.ts │ ├── page2.component.js │ ├── page2.component.js.map │ ├── page2.component.ts │ ├── section1.page2.component.js │ ├── section1.page2.component.js.map │ ├── section1.page2.component.ts │ ├── section2.page2.component.js │ ├── section2.page2.component.js.map │ └── section2.page2.component.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step31_routing_guards ├── .gitignore ├── app │ ├── admin.component.js │ ├── admin.component.js.map │ ├── admin.component.ts │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── app.routes.js │ ├── app.routes.js.map │ ├── app.routes.ts │ ├── auth.guard.js │ ├── auth.guard.js.map │ ├── auth.guard.ts │ ├── main.js │ ├── main.js.map │ ├── main.ts │ ├── page1.component.js │ ├── page1.component.js.map │ ├── page1.component.ts │ ├── page2.component.js │ ├── page2.component.js.map │ └── page2.component.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step32_services ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── hero.service.js │ ├── hero.service.js.map │ ├── hero.service.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step33_rxjs_rendering_observables ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step34_rxjs_map_date_pipes ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step35_rxjs_click_events_with_subjects ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── npm-debug.log ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step36_rxjs_merge_clicks_intervals ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step37_rxjs_states_startwith_scan ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step38_rxjs_mapping_streams_to_values ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step39_rxjs_data_services_with_immutables ├── .gitignore ├── app │ ├── Todo.js │ ├── Todo.js.map │ ├── Todo.ts │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── data.service.js │ ├── data.service.js.map │ ├── data.service.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step40_ngrx_store_state ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ ├── main.ts │ ├── reducers.js │ ├── reducers.js.map │ └── reducers.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step41_ngrx_dispatching_payloads ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ ├── main.ts │ ├── reducers.js │ ├── reducers.js.map │ └── reducers.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step42_ngrx_passing_template_input_values ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ ├── main.ts │ ├── reducers.js │ ├── reducers.js.map │ └── reducers.ts ├── index.html ├── npm-debug.log ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step43_ngrx_passing_observables_to_components ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── clock.component.js │ ├── clock.component.js.map │ ├── clock.component.ts │ ├── main.js │ ├── main.js.map │ ├── main.ts │ ├── reducers.js │ ├── reducers.js.map │ └── reducers.ts ├── index.html ├── npm-debug.log ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step44_ngrx_adding _second_reducer ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── clock.component.js │ ├── clock.component.js.map │ ├── clock.component.ts │ ├── main.js │ ├── main.js.map │ ├── main.ts │ ├── reducers.js │ ├── reducers.js.map │ └── reducers.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step45_ngrx_using_two_reducers_together ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── clock.component.js │ ├── clock.component.js.map │ ├── clock.component.ts │ ├── main.js │ ├── main.js.map │ ├── main.ts │ ├── reducers.js │ ├── reducers.js.map │ └── reducers.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step46_ngrx_using_value_from store_in_reducer ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── clock.component.js │ ├── clock.component.js.map │ ├── clock.component.ts │ ├── main.js │ ├── main.js.map │ ├── main.ts │ ├── reducers.js │ ├── reducers.js.map │ └── reducers.ts ├── index.html ├── npm-debug.log ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step47_animations_quick_start ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── hero.js │ ├── hero.js.map │ ├── hero.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step48_animations_entering_leaving ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── hero.js │ ├── hero.js.map │ ├── hero.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step49_animations_automatic_property_calculation ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── hero.js │ ├── hero.js.map │ ├── hero.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step50_animations_timings ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── hero.js │ ├── hero.js.map │ ├── hero.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step51_animations_multi_step_with_key_frames ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── hero.js │ ├── hero.js.map │ ├── hero.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── npm-debug.log ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step52_animations_parallel_groups ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── hero.js │ ├── hero.js.map │ ├── hero.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step53_animations_page_transitions ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── app.routes.js │ ├── app.routes.js.map │ ├── app.routes.ts │ ├── main.js │ ├── main.js.map │ ├── main.ts │ ├── page1.component.js │ ├── page1.component.js.map │ ├── page1.component.ts │ ├── page2.component.js │ ├── page2.component.js.map │ └── page2.component.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step54_view_encapsulation ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step55_css_host_selector ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step56_firebase ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── firebase3 │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step57_firebase_list_crud ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── firebase3 │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step58_firebase_object ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── firebase3 │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts ├── step59_firebase_object_crud ├── .gitignore ├── app │ ├── app.component.js │ ├── app.component.js.map │ ├── app.component.ts │ ├── main.js │ ├── main.js.map │ └── main.ts ├── index.html ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings │ ├── globals │ ├── core-js │ │ ├── index.d.ts │ │ └── typings.json │ ├── firebase3 │ │ ├── index.d.ts │ │ └── typings.json │ ├── jasmine │ │ ├── index.d.ts │ │ └── typings.json │ └── node │ │ ├── index.d.ts │ │ └── typings.json │ └── index.d.ts └── step60_firebase_one_to_many ├── .gitignore ├── app ├── app.component.js ├── app.component.js.map ├── app.component.ts ├── main.js ├── main.js.map └── main.ts ├── index.html ├── npm-debug.log ├── package.json ├── readme.md ├── styles.css ├── systemjs.config.js ├── tsconfig.json ├── typings.json └── typings ├── globals ├── core-js │ ├── index.d.ts │ └── typings.json ├── firebase3 │ ├── index.d.ts │ └── typings.json ├── jasmine │ ├── index.d.ts │ └── typings.json └── node │ ├── index.d.ts │ └── typings.json └── index.d.ts /.gitignore: -------------------------------------------------------------------------------- 1 | **/.DS_Store -------------------------------------------------------------------------------- /step00a_quick_start_systemjs/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step00a_quick_start_systemjs/app/app.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"app.component.js","sourceRoot":"","sources":["app.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA0B,eAAe,CAAC,CAAA;AAM1C;IAAA;IAA4B,CAAC;IAJ7B;QAAC,gBAAS,CAAC;YACT,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,+BAA+B;SAC1C,CAAC;;oBAAA;IAC0B,mBAAC;AAAD,CAAC,AAA7B,IAA6B;AAAhB,oBAAY,eAAI,CAAA"} -------------------------------------------------------------------------------- /step00a_quick_start_systemjs/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'my-app', 5 | template: '

My First Angular App

' 6 | }) 7 | export class AppComponent { } 8 | 9 | -------------------------------------------------------------------------------- /step00a_quick_start_systemjs/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_module_1 = require('./app.module'); 4 | var platform = platform_browser_dynamic_1.platformBrowserDynamic(); 5 | platform.bootstrapModule(app_module_1.AppModule); 6 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step00a_quick_start_systemjs/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAAuC,mCAAmC,CAAC,CAAA;AAC3E,2BAA0B,cAAc,CAAC,CAAA;AAEzC,IAAM,QAAQ,GAAG,iDAAsB,EAAE,CAAC;AAE1C,QAAQ,CAAC,eAAe,CAAC,sBAAS,CAAC,CAAC"} -------------------------------------------------------------------------------- /step00a_quick_start_systemjs/app/main.ts: -------------------------------------------------------------------------------- 1 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 2 | import { AppModule } from './app.module'; 3 | 4 | const platform = platformBrowserDynamic(); 5 | 6 | platform.bootstrapModule(AppModule); 7 | 8 | -------------------------------------------------------------------------------- /step00a_quick_start_systemjs/styles.css: -------------------------------------------------------------------------------- 1 | /* Master Styles */ 2 | h1 { 3 | color: #369; 4 | font-family: Arial, Helvetica, sans-serif; 5 | font-size: 250%; 6 | } 7 | h2, h3 { 8 | color: #444; 9 | font-family: Arial, Helvetica, sans-serif; 10 | font-weight: lighter; 11 | } 12 | body { 13 | margin: 2em; 14 | } 15 | 16 | -------------------------------------------------------------------------------- /step00a_quick_start_systemjs/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /step00a_quick_start_systemjs/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160725163759", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160909174046" 6 | } 7 | } 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /step00a_quick_start_systemjs/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step00b_quick_start_webpack/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /step00b_quick_start_webpack/config/helpers.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | var _root = path.resolve(__dirname, '..'); 3 | function root(args) { 4 | args = Array.prototype.slice.call(arguments, 0); 5 | return path.join.apply(path, [_root].concat(args)); 6 | } 7 | exports.root = root; 8 | -------------------------------------------------------------------------------- /step00b_quick_start_webpack/karma.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./config/karma.conf.js'); -------------------------------------------------------------------------------- /step00b_quick_start_webpack/public/css/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: #0147A7; 3 | color: #fff; 4 | } 5 | -------------------------------------------------------------------------------- /step00b_quick_start_webpack/public/images/angular.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panacloud/learn-angular/40f27b993922c7c4696f0f3e893fce3dd580b2e0/step00b_quick_start_webpack/public/images/angular.png -------------------------------------------------------------------------------- /step00b_quick_start_webpack/readme.md: -------------------------------------------------------------------------------- 1 | Read: 2 | 3 | https://angular.io/docs/ts/latest/guide/webpack.html 4 | 5 | Watch: 6 | 7 | https://www.youtube.com/watch?v=j9w5hFit5rM -------------------------------------------------------------------------------- /step00b_quick_start_webpack/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | main { 2 | padding: 1em; 3 | font-family: Arial, Helvetica, sans-serif; 4 | text-align: center; 5 | margin-top: 50px; 6 | display: block; 7 | } 8 | -------------------------------------------------------------------------------- /step00b_quick_start_webpack/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 |

Hello from Angular 2 App with Webpack

3 | 4 |
5 | -------------------------------------------------------------------------------- /step00b_quick_start_webpack/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import '../../public/css/styles.css'; 3 | @Component({ 4 | selector: 'my-app', 5 | template: require('./app.component.html'), 6 | styles: [require('./app.component.css')] 7 | }) 8 | export class AppComponent { } 9 | -------------------------------------------------------------------------------- /step00b_quick_start_webpack/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Angular With Webpack 6 | 7 | 8 | 9 | 10 | Loading... 11 | 12 | 13 | -------------------------------------------------------------------------------- /step00b_quick_start_webpack/src/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { enableProdMode } from '@angular/core'; 3 | import { AppComponent } from './app/app.component'; 4 | if (process.env.ENV === 'production') { 5 | enableProdMode(); 6 | } 7 | bootstrap(AppComponent, []); 8 | -------------------------------------------------------------------------------- /step00b_quick_start_webpack/src/polyfills.ts: -------------------------------------------------------------------------------- 1 | import 'core-js/es6'; 2 | import 'reflect-metadata'; 3 | require('zone.js/dist/zone'); 4 | if (process.env.ENV === 'production') { 5 | // Production 6 | } else { 7 | // Development 8 | Error['stackTraceLimit'] = Infinity; 9 | require('zone.js/dist/long-stack-trace-zone'); 10 | } 11 | -------------------------------------------------------------------------------- /step00b_quick_start_webpack/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step00b_quick_start_webpack/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step00b_quick_start_webpack/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./config/webpack.dev.js'); 2 | 3 | -------------------------------------------------------------------------------- /step01_template_variables/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step01_template_variables/app/app.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"app.component.js","sourceRoot":"","sources":["app.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA0B,eAAe,CAAC,CAAA;AAM1C;IAGI;QACI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACtB,CAAC;IATL;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,yBAAyB;SACtC,CAAC;;oBAAA;IAOF,mBAAC;AAAD,CAAC,AAND,IAMC;AANY,oBAAY,eAMxB,CAAA"} -------------------------------------------------------------------------------- /step01_template_variables/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'my-app', 5 | template: '

Hello {{name}}

' 6 | }) 7 | export class AppComponent { 8 | name: string; 9 | 10 | constructor() { 11 | this.name = 'Zia'; 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /step01_template_variables/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_module_1 = require('./app.module'); 4 | platform_browser_dynamic_1.platformBrowserDynamic().bootstrapModule(app_module_1.AppModule); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step01_template_variables/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAAuC,mCAAmC,CAAC,CAAA;AAC3E,2BAA0B,cAAc,CAAC,CAAA;AACzC,iDAAsB,EAAE,CAAC,eAAe,CAAC,sBAAS,CAAC,CAAC"} -------------------------------------------------------------------------------- /step01_template_variables/app/main.ts: -------------------------------------------------------------------------------- 1 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 2 | import { AppModule } from './app.module'; 3 | platformBrowserDynamic().bootstrapModule(AppModule); 4 | -------------------------------------------------------------------------------- /step01_template_variables/readme.md: -------------------------------------------------------------------------------- 1 | We will use ng-book 2 to learn: https://www.ng-book.com/2/ 2 | 3 | Chapter 1 pages 16-17 -------------------------------------------------------------------------------- /step01_template_variables/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step01_template_variables/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | 15 | -------------------------------------------------------------------------------- /step01_template_variables/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160807145350" 6 | } 7 | } 8 | 9 | -------------------------------------------------------------------------------- /step01_template_variables/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step02_arrays/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step02_arrays/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_module_1 = require('./app.module'); 4 | platform_browser_dynamic_1.platformBrowserDynamic().bootstrapModule(app_module_1.AppModule); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step02_arrays/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAAuC,mCAAmC,CAAC,CAAA;AAC3E,2BAA0B,cAAc,CAAC,CAAA;AACzC,iDAAsB,EAAE,CAAC,eAAe,CAAC,sBAAS,CAAC,CAAC"} -------------------------------------------------------------------------------- /step02_arrays/app/main.ts: -------------------------------------------------------------------------------- 1 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 2 | import { AppModule } from './app.module'; 3 | platformBrowserDynamic().bootstrapModule(AppModule); 4 | -------------------------------------------------------------------------------- /step02_arrays/readme.md: -------------------------------------------------------------------------------- 1 | We will use ng-book 2 to learn: https://www.ng-book.com/2/ 2 | 3 | Chapter 1 pages 18-21 -------------------------------------------------------------------------------- /step02_arrays/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step02_arrays/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | 15 | -------------------------------------------------------------------------------- /step02_arrays/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160807145350" 6 | } 7 | } 8 | 9 | -------------------------------------------------------------------------------- /step02_arrays/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step03_events/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step03_events/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_module_1 = require('./app.module'); 4 | platform_browser_dynamic_1.platformBrowserDynamic().bootstrapModule(app_module_1.AppModule); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step03_events/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAAuC,mCAAmC,CAAC,CAAA;AAC3E,2BAA0B,cAAc,CAAC,CAAA;AACzC,iDAAsB,EAAE,CAAC,eAAe,CAAC,sBAAS,CAAC,CAAC"} -------------------------------------------------------------------------------- /step03_events/app/main.ts: -------------------------------------------------------------------------------- 1 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 2 | import { AppModule } from './app.module'; 3 | platformBrowserDynamic().bootstrapModule(AppModule); 4 | -------------------------------------------------------------------------------- /step03_events/readme.md: -------------------------------------------------------------------------------- 1 | We will use ng-book 2 to learn: https://www.ng-book.com/2/ 2 | 3 | Chapter 1 pages 25-27 -------------------------------------------------------------------------------- /step03_events/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step03_events/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | 15 | -------------------------------------------------------------------------------- /step03_events/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160807145350" 6 | } 7 | } 8 | 9 | -------------------------------------------------------------------------------- /step03_events/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step04_binding_properties/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step04_binding_properties/app/app.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"app.component.js","sourceRoot":"","sources":["app.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAAwB,eAAe,CAAC,CAAA;AAMxC;IAGI;QACI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACtB,CAAC;IATL;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,qCAAmC;SAChD,CAAC;;oBAAA;IAOF,mBAAC;AAAD,CAAC,AAND,IAMC;AANY,oBAAY,eAMxB,CAAA"} -------------------------------------------------------------------------------- /step04_binding_properties/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import {Component} from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'my-app', 5 | template: `` 6 | }) 7 | export class AppComponent { 8 | name: string; 9 | 10 | constructor() { 11 | this.name = 'Zia'; 12 | } 13 | } -------------------------------------------------------------------------------- /step04_binding_properties/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step04_binding_properties/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step04_binding_properties/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step04_binding_properties/readme.md: -------------------------------------------------------------------------------- 1 | From: https://angular.io/cheatsheet 2 | 3 | 4 | Chapter 1 pages 46 ng-book 2: https://www.ng-book.com/2/ -------------------------------------------------------------------------------- /step04_binding_properties/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step04_binding_properties/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step04_binding_properties/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step04_binding_properties/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step05_component_child/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step05_component_child/app/childOne.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"childOne.component.js","sourceRoot":"","sources":["childOne.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAAwB,eAAe,CAAC,CAAA;AAMxC;IAEI;IAEA,CAAC;IARL;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,WAAW;YACrB,QAAQ,EAAE,8BAA8B;SAC3C,CAAC;;yBAAA;IAMF,wBAAC;AAAD,CAAC,AALD,IAKC;AALY,yBAAiB,oBAK7B,CAAA"} -------------------------------------------------------------------------------- /step05_component_child/app/childOne.component.ts: -------------------------------------------------------------------------------- 1 | import {Component} from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'child-one', 5 | template: `
This is child One
` 6 | }) 7 | export class ChildOneComponent { 8 | 9 | constructor() { 10 | 11 | } 12 | } -------------------------------------------------------------------------------- /step05_component_child/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step05_component_child/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step05_component_child/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step05_component_child/readme.md: -------------------------------------------------------------------------------- 1 | Chapter 1 pages 38-42 ng-book 2: https://www.ng-book.com/2/ -------------------------------------------------------------------------------- /step05_component_child/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step05_component_child/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step05_component_child/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step05_component_child/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step06_component_tree/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step06_component_tree/app/childTwo.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"childTwo.component.js","sourceRoot":"","sources":["childTwo.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAAwB,eAAe,CAAC,CAAA;AAMxC;IAEI;IAEA,CAAC;IARL;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,WAAW;YACrB,QAAQ,EAAE,8BAA8B;SAC3C,CAAC;;yBAAA;IAMF,wBAAC;AAAD,CAAC,AALD,IAKC;AALY,yBAAiB,oBAK7B,CAAA"} -------------------------------------------------------------------------------- /step06_component_tree/app/childTwo.component.ts: -------------------------------------------------------------------------------- 1 | import {Component} from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'child-two', 5 | template: `
This is child Two
` 6 | }) 7 | export class ChildTwoComponent { 8 | 9 | constructor() { 10 | 11 | } 12 | } -------------------------------------------------------------------------------- /step06_component_tree/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step06_component_tree/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step06_component_tree/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step06_component_tree/app/subChild.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"subChild.component.js","sourceRoot":"","sources":["subChild.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAAwB,eAAe,CAAC,CAAA;AAMxC;IAEI;IAEA,CAAC;IARL;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,WAAW;YACrB,QAAQ,EAAE,wCAAwC;SACrD,CAAC;;yBAAA;IAMF,wBAAC;AAAD,CAAC,AALD,IAKC;AALY,yBAAiB,oBAK7B,CAAA"} -------------------------------------------------------------------------------- /step06_component_tree/app/subChild.component.ts: -------------------------------------------------------------------------------- 1 | import {Component} from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'sub-child', 5 | template: `
This is sub child component
` 6 | }) 7 | export class SubChildComponent { 8 | 9 | constructor() { 10 | 11 | } 12 | } -------------------------------------------------------------------------------- /step06_component_tree/readme.md: -------------------------------------------------------------------------------- 1 | Chapter 1 pages 38-42 ng-book 2: https://www.ng-book.com/2/ -------------------------------------------------------------------------------- /step06_component_tree/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step06_component_tree/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step06_component_tree/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step06_component_tree/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step07_component_child_input/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step07_component_child_input/app/childOne.component.ts: -------------------------------------------------------------------------------- 1 | import {Component} from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'child-one', 5 | template: `
This is child One with input: {{data}}
`, 6 | inputs: ['data'] 7 | }) 8 | export class ChildOneComponent { 9 | data: string; 10 | constructor() { 11 | this.data = "default value"; 12 | } 13 | } -------------------------------------------------------------------------------- /step07_component_child_input/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step07_component_child_input/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step07_component_child_input/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step07_component_child_input/readme.md: -------------------------------------------------------------------------------- 1 | Chapter 1 pages 42-45 ng-book 2: https://www.ng-book.com/2/ 2 | 3 | https://angular.io/docs/ts/latest/guide/template-syntax.html#!#inputs-outputs -------------------------------------------------------------------------------- /step07_component_child_input/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step07_component_child_input/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step07_component_child_input/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step07_component_child_input/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step08_component_child_dynamic_input/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step08_component_child_dynamic_input/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step08_component_child_dynamic_input/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step08_component_child_dynamic_input/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step08_component_child_dynamic_input/readme.md: -------------------------------------------------------------------------------- 1 | Chapter 1 pages 42-45 ng-book 2: https://www.ng-book.com/2/ 2 | 3 | https://angular.io/docs/ts/latest/guide/template-syntax.html#!#inputs-outputs -------------------------------------------------------------------------------- /step08_component_child_dynamic_input/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step08_component_child_dynamic_input/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step08_component_child_dynamic_input/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step08_component_child_dynamic_input/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step09_component_host/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step09_component_host/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step09_component_host/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step09_component_host/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step09_component_host/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 2em; 3 | } 4 | 5 | /* 6 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 7 | * for the full set of master styles used by the documentation samples 8 | */ 9 | -------------------------------------------------------------------------------- /step09_component_host/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step09_component_host/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step09_component_host/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step10_component_list/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step10_component_list/app/Pair.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var Pair = (function () { 3 | function Pair(name, value) { 4 | this.name = name; 5 | this.value = value; 6 | } 7 | return Pair; 8 | }()); 9 | exports.Pair = Pair; 10 | //# sourceMappingURL=Pair.js.map -------------------------------------------------------------------------------- /step10_component_list/app/Pair.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"Pair.js","sourceRoot":"","sources":["Pair.ts"],"names":[],"mappings":";AAAA;IAII,cAAY,IAAY,EAAE,KAAa;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAEL,WAAC;AAAD,CAAC,AATD,IASC;AATY,YAAI,OAShB,CAAA"} -------------------------------------------------------------------------------- /step10_component_list/app/Pair.ts: -------------------------------------------------------------------------------- 1 | export class Pair { 2 | name: string; 3 | value: number; 4 | 5 | constructor(name: string, value: number){ 6 | this.name = name; 7 | this.value = value; 8 | } 9 | 10 | } -------------------------------------------------------------------------------- /step10_component_list/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step10_component_list/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step10_component_list/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step10_component_list/app/pair.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"pair.component.js","sourceRoot":"","sources":["pair.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAAwB,eAAe,CAAC,CAAA;AAWxC;IAEI;IAEA,CAAC;IAZL;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,2IAGQ;YAClB,MAAM,EAAE,CAAC,WAAW,CAAC;SACxB,CAAC;;qBAAA;IAMF,oBAAC;AAAD,CAAC,AALD,IAKC;AALY,qBAAa,gBAKzB,CAAA"} -------------------------------------------------------------------------------- /step10_component_list/readme.md: -------------------------------------------------------------------------------- 1 | Chapter 1 and section "Storing multiple Articles" on pages 42-48 ng-book 2: https://www.ng-book.com/2/ 2 | 3 | 4 | -------------------------------------------------------------------------------- /step10_component_list/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 2em; 3 | } 4 | 5 | /* 6 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 7 | * for the full set of master styles used by the documentation samples 8 | */ 9 | -------------------------------------------------------------------------------- /step10_component_list/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step10_component_list/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step10_component_list/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step11_component_reusable/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step11_component_reusable/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step11_component_reusable/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step11_component_reusable/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step11_component_reusable/assets/pakistan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panacloud/learn-angular/40f27b993922c7c4696f0f3e893fce3dd580b2e0/step11_component_reusable/assets/pakistan.png -------------------------------------------------------------------------------- /step11_component_reusable/readme.md: -------------------------------------------------------------------------------- 1 | Chapter 2 pages 91-94 from ng-book 2: https://www.ng-book.com/2/ 2 | 3 | https://angular.io/docs/ts/latest/guide/template-syntax.html#!#inputs-outputs 4 | 5 | -------------------------------------------------------------------------------- /step11_component_reusable/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 2em; 3 | } 4 | 5 | /* 6 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 7 | * for the full set of master styles used by the documentation samples 8 | */ 9 | -------------------------------------------------------------------------------- /step11_component_reusable/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step11_component_reusable/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step11_component_reusable/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step12_ngIf/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /step12_ngIf/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step12_ngIf/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step12_ngIf/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step12_ngIf/readme.md: -------------------------------------------------------------------------------- 1 | Chapter 4 pages 107 ng-book 2: 2 | 3 | https://www.ng-book.com/2/ -------------------------------------------------------------------------------- /step12_ngIf/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 2em; 3 | } 4 | 5 | /* 6 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 7 | * for the full set of master styles used by the documentation samples 8 | */ 9 | -------------------------------------------------------------------------------- /step12_ngIf/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step12_ngIf/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step12_ngIf/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step13_ngSwitch/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /step13_ngSwitch/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step13_ngSwitch/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step13_ngSwitch/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step13_ngSwitch/readme.md: -------------------------------------------------------------------------------- 1 | Chapter 4 page 109 of ng-book 2: 2 | 3 | https://www.ng-book.com/2/ -------------------------------------------------------------------------------- /step13_ngSwitch/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 2em; 3 | } 4 | 5 | /* 6 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 7 | * for the full set of master styles used by the documentation samples 8 | */ 9 | -------------------------------------------------------------------------------- /step13_ngSwitch/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step13_ngSwitch/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step13_ngSwitch/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step14_ngStyle/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /step14_ngStyle/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step14_ngStyle/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step14_ngStyle/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step14_ngStyle/readme.md: -------------------------------------------------------------------------------- 1 | Chapter 4 page 110-111 of ng-book 2: 2 | 3 | https://www.ng-book.com/2/ -------------------------------------------------------------------------------- /step14_ngStyle/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 2em; 3 | } 4 | 5 | /* 6 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 7 | * for the full set of master styles used by the documentation samples 8 | */ 9 | -------------------------------------------------------------------------------- /step14_ngStyle/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step14_ngStyle/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step14_ngStyle/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step15_ngClass/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /step15_ngClass/app/app.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"app.component.js","sourceRoot":"","sources":["app.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAAwB,eAAe,CAAC,CAAA;AAgBxC;IAAA;IAEA,CAAC;IAhBD;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,sKAGT;YACD,MAAM,EAAE,CAAC,kHAKV,CAAC;SAEH,CAAC;;oBAAA;IAGF,mBAAC;AAAD,CAAC,AAFD,IAEC;AAFY,oBAAY,eAExB,CAAA"} -------------------------------------------------------------------------------- /step15_ngClass/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step15_ngClass/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step15_ngClass/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step15_ngClass/readme.md: -------------------------------------------------------------------------------- 1 | Chapter 4 page 113 of ng-book 2: 2 | 3 | https://www.ng-book.com/2/ -------------------------------------------------------------------------------- /step15_ngClass/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 2em; 3 | } 4 | 5 | /* 6 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 7 | * for the full set of master styles used by the documentation samples 8 | */ 9 | -------------------------------------------------------------------------------- /step15_ngClass/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step15_ngClass/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step15_ngClass/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step16_ngClass_Dynamic/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /step16_ngClass_Dynamic/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step16_ngClass_Dynamic/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step16_ngClass_Dynamic/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step16_ngClass_Dynamic/readme.md: -------------------------------------------------------------------------------- 1 | Chapter 4 page 114 of ng-book 2: 2 | 3 | https://www.ng-book.com/2/ -------------------------------------------------------------------------------- /step16_ngClass_Dynamic/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step16_ngClass_dynamic/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 2em; 3 | } 4 | 5 | /* 6 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 7 | * for the full set of master styles used by the documentation samples 8 | */ 9 | -------------------------------------------------------------------------------- /step16_ngClass_dynamic/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step16_ngClass_dynamic/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step17_ngClass_array/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /step17_ngClass_array/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step17_ngClass_array/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step17_ngClass_array/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step17_ngClass_array/readme.md: -------------------------------------------------------------------------------- 1 | Chapter 4 page 114-115 of ng-book 2: 2 | 3 | https://www.ng-book.com/2/ -------------------------------------------------------------------------------- /step17_ngClass_array/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 2em; 3 | } 4 | 5 | /* 6 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 7 | * for the full set of master styles used by the documentation samples 8 | */ 9 | -------------------------------------------------------------------------------- /step17_ngClass_array/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step17_ngClass_array/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step17_ngClass_array/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step18_ngFor/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /step18_ngFor/app/app.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"app.component.js","sourceRoot":"","sources":["app.component.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;YAUA;gBAII;oBACI,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;gBACrD,CAAC;gBAdL;oBAAC,gBAAS,CAAC;wBACP,QAAQ,EAAE,QAAQ;wBAClB,QAAQ,EAAE,wGAIT;qBACJ,CAAC;;gCAAA;gBASF,mBAAC;YAAD,CAAC,AARD,IAQC;YARD,uCAQC,CAAA"} -------------------------------------------------------------------------------- /step18_ngFor/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":"AAAA,qEAAqE;;;;;;;;;;;;;;YAMrE,mBAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step18_ngFor/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step18_ngFor/readme.md: -------------------------------------------------------------------------------- 1 | Chapter 4 page 116 of ng-book 2: 2 | 3 | https://www.ng-book.com/2/ -------------------------------------------------------------------------------- /step18_ngFor/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 2em; 3 | } 4 | 5 | /* 6 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 7 | * for the full set of master styles used by the documentation samples 8 | */ 9 | -------------------------------------------------------------------------------- /step18_ngFor/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step18_ngFor/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step18_ngFor/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step19_ngFor_index/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /step19_ngFor_index/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step19_ngFor_index/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step19_ngFor_index/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step19_ngFor_index/readme.md: -------------------------------------------------------------------------------- 1 | Chapter 4 page 120-121 of ng-book 2: 2 | 3 | https://www.ng-book.com/2/ -------------------------------------------------------------------------------- /step19_ngFor_index/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 2em; 3 | } 4 | 5 | /* 6 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 7 | * for the full set of master styles used by the documentation samples 8 | */ 9 | -------------------------------------------------------------------------------- /step19_ngFor_index/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step19_ngFor_index/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step19_ngFor_index/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step20_ngNonBindable/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /step20_ngNonBindable/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step20_ngNonBindable/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step20_ngNonBindable/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step20_ngNonBindable/readme.md: -------------------------------------------------------------------------------- 1 | Chapter 4 page 121 of ng-book 2: 2 | 3 | https://www.ng-book.com/2/ -------------------------------------------------------------------------------- /step20_ngNonBindable/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 2em; 3 | } 4 | 5 | /* 6 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 7 | * for the full set of master styles used by the documentation samples 8 | */ 9 | -------------------------------------------------------------------------------- /step20_ngNonBindable/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step20_ngNonBindable/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step20_ngNonBindable/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step21_forms_basic/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step21_forms_basic/app/Hero.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var Hero = (function () { 3 | function Hero(id, name) { 4 | this.id = id; 5 | this.name = name; 6 | } 7 | return Hero; 8 | }()); 9 | exports.Hero = Hero; 10 | //# sourceMappingURL=Hero.js.map -------------------------------------------------------------------------------- /step21_forms_basic/app/Hero.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"Hero.js","sourceRoot":"","sources":["Hero.ts"],"names":[],"mappings":";AAAA;IACE,cACS,EAAU,EACV,IAAY;QADZ,OAAE,GAAF,EAAE,CAAQ;QACV,SAAI,GAAJ,IAAI,CAAQ;IAChB,CAAC;IACR,WAAC;AAAD,CAAC,AALD,IAKC;AALY,YAAI,OAKhB,CAAA"} -------------------------------------------------------------------------------- /step21_forms_basic/app/Hero.ts: -------------------------------------------------------------------------------- 1 | export class Hero { 2 | constructor( 3 | public id: number, 4 | public name: string 5 | ) { } 6 | } -------------------------------------------------------------------------------- /step21_forms_basic/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { HeroFormComponent } from './heroform.component'; 3 | 4 | @Component({ 5 | selector: 'my-app', 6 | template: '', 7 | directives: [HeroFormComponent] 8 | }) 9 | export class AppComponent { } 10 | -------------------------------------------------------------------------------- /step21_forms_basic/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,sBAAqD,gBAAgB,CAAC,CAAA;AACtE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,EAAE;IACtB,8BAAsB,EAAE;IACxB,oBAAY,EAAE;CACd,CAAC;KACD,KAAK,CAAC,UAAC,GAAQ,IAAK,OAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC,CAAC"} -------------------------------------------------------------------------------- /step21_forms_basic/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { disableDeprecatedForms, provideForms } from '@angular/forms'; 3 | import { AppComponent } from './app.component'; 4 | 5 | bootstrap(AppComponent, [ 6 | disableDeprecatedForms(), 7 | provideForms() 8 | ]) 9 | .catch((err: any) => console.error(err)); 10 | 11 | 12 | -------------------------------------------------------------------------------- /step21_forms_basic/readme.md: -------------------------------------------------------------------------------- 1 | Read: 2 | 3 | https://angular.io/docs/ts/latest/guide/forms.html 4 | 5 | Forms in Angular 2 Chapter of ng-book 2: 6 | 7 | https://www.ng-book.com/2/ -------------------------------------------------------------------------------- /step21_forms_basic/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step21_forms_basic/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step21_forms_basic/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step21_forms_basic/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step22_forms_track_state/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step22_forms_track_state/app/Hero.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var Hero = (function () { 3 | function Hero(id, name) { 4 | this.id = id; 5 | this.name = name; 6 | } 7 | return Hero; 8 | }()); 9 | exports.Hero = Hero; 10 | //# sourceMappingURL=Hero.js.map -------------------------------------------------------------------------------- /step22_forms_track_state/app/Hero.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"Hero.js","sourceRoot":"","sources":["Hero.ts"],"names":[],"mappings":";AAAA;IACE,cACS,EAAU,EACV,IAAY;QADZ,OAAE,GAAF,EAAE,CAAQ;QACV,SAAI,GAAJ,IAAI,CAAQ;IAChB,CAAC;IACR,WAAC;AAAD,CAAC,AALD,IAKC;AALY,YAAI,OAKhB,CAAA"} -------------------------------------------------------------------------------- /step22_forms_track_state/app/Hero.ts: -------------------------------------------------------------------------------- 1 | export class Hero { 2 | constructor( 3 | public id: number, 4 | public name: string 5 | ) { } 6 | } -------------------------------------------------------------------------------- /step22_forms_track_state/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { HeroFormComponent } from './heroform.component'; 3 | 4 | @Component({ 5 | selector: 'my-app', 6 | template: '', 7 | directives: [HeroFormComponent] 8 | }) 9 | export class AppComponent { } 10 | -------------------------------------------------------------------------------- /step22_forms_track_state/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,sBAAqD,gBAAgB,CAAC,CAAA;AACtE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,EAAE;IACtB,8BAAsB,EAAE;IACxB,oBAAY,EAAE;CACd,CAAC;KACD,KAAK,CAAC,UAAC,GAAQ,IAAK,OAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC,CAAC"} -------------------------------------------------------------------------------- /step22_forms_track_state/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { disableDeprecatedForms, provideForms } from '@angular/forms'; 3 | import { AppComponent } from './app.component'; 4 | 5 | bootstrap(AppComponent, [ 6 | disableDeprecatedForms(), 7 | provideForms() 8 | ]) 9 | .catch((err: any) => console.error(err)); 10 | 11 | 12 | -------------------------------------------------------------------------------- /step22_forms_track_state/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | .ng-valid[required] { 11 | border-left: 5px solid #42A948; /* green */ 12 | } 13 | 14 | .ng-invalid { 15 | border-left: 5px solid #a94442; /* red */ 16 | } 17 | -------------------------------------------------------------------------------- /step22_forms_track_state/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step22_forms_track_state/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step22_forms_track_state/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step23_forms_select/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step23_forms_select/app/Hero.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var Hero = (function () { 3 | function Hero(id, name) { 4 | this.id = id; 5 | this.name = name; 6 | } 7 | return Hero; 8 | }()); 9 | exports.Hero = Hero; 10 | //# sourceMappingURL=Hero.js.map -------------------------------------------------------------------------------- /step23_forms_select/app/Hero.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"Hero.js","sourceRoot":"","sources":["Hero.ts"],"names":[],"mappings":";AAAA;IACE,cACS,EAAU,EACV,IAAY;QADZ,OAAE,GAAF,EAAE,CAAQ;QACV,SAAI,GAAJ,IAAI,CAAQ;IAChB,CAAC;IACR,WAAC;AAAD,CAAC,AALD,IAKC;AALY,YAAI,OAKhB,CAAA"} -------------------------------------------------------------------------------- /step23_forms_select/app/Hero.ts: -------------------------------------------------------------------------------- 1 | export class Hero { 2 | constructor( 3 | public id: number, 4 | public name: string 5 | ) { } 6 | } -------------------------------------------------------------------------------- /step23_forms_select/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { HeroFormComponent } from './heroform.component'; 3 | 4 | @Component({ 5 | selector: 'my-app', 6 | template: '', 7 | directives: [HeroFormComponent] 8 | }) 9 | export class AppComponent { } 10 | -------------------------------------------------------------------------------- /step23_forms_select/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,sBAAqD,gBAAgB,CAAC,CAAA;AACtE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,EAAE;IACtB,8BAAsB,EAAE;IACxB,oBAAY,EAAE;CACd,CAAC;KACD,KAAK,CAAC,UAAC,GAAQ,IAAK,OAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC,CAAC"} -------------------------------------------------------------------------------- /step23_forms_select/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { disableDeprecatedForms, provideForms } from '@angular/forms'; 3 | import { AppComponent } from './app.component'; 4 | 5 | bootstrap(AppComponent, [ 6 | disableDeprecatedForms(), 7 | provideForms() 8 | ]) 9 | .catch((err: any) => console.error(err)); 10 | 11 | 12 | -------------------------------------------------------------------------------- /step23_forms_select/readme.md: -------------------------------------------------------------------------------- 1 | Read: 2 | 3 | https://angular.io/docs/ts/latest/guide/forms.html 4 | 5 | Forms in Angular 2 Chapter of ng-book 2: 6 | 7 | https://www.ng-book.com/2/ -------------------------------------------------------------------------------- /step23_forms_select/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step23_forms_select/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step23_forms_select/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step23_forms_select/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step24_forms_validation/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step24_forms_validation/app/Hero.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var Hero = (function () { 3 | function Hero(id, name) { 4 | this.id = id; 5 | this.name = name; 6 | } 7 | return Hero; 8 | }()); 9 | exports.Hero = Hero; 10 | //# sourceMappingURL=Hero.js.map -------------------------------------------------------------------------------- /step24_forms_validation/app/Hero.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"Hero.js","sourceRoot":"","sources":["Hero.ts"],"names":[],"mappings":";AAAA;IACE,cACS,EAAU,EACV,IAAY;QADZ,OAAE,GAAF,EAAE,CAAQ;QACV,SAAI,GAAJ,IAAI,CAAQ;IAChB,CAAC;IACR,WAAC;AAAD,CAAC,AALD,IAKC;AALY,YAAI,OAKhB,CAAA"} -------------------------------------------------------------------------------- /step24_forms_validation/app/Hero.ts: -------------------------------------------------------------------------------- 1 | export class Hero { 2 | constructor( 3 | public id: number, 4 | public name: string 5 | ) { } 6 | } -------------------------------------------------------------------------------- /step24_forms_validation/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { HeroFormComponent } from './heroform.component'; 3 | 4 | @Component({ 5 | selector: 'my-app', 6 | template: '', 7 | directives: [HeroFormComponent] 8 | }) 9 | export class AppComponent { } 10 | -------------------------------------------------------------------------------- /step24_forms_validation/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,sBAAqD,gBAAgB,CAAC,CAAA;AACtE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,EAAE;IACtB,8BAAsB,EAAE;IACxB,oBAAY,EAAE;CACd,CAAC;KACD,KAAK,CAAC,UAAC,GAAQ,IAAK,OAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC,CAAC"} -------------------------------------------------------------------------------- /step24_forms_validation/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { disableDeprecatedForms, provideForms } from '@angular/forms'; 3 | import { AppComponent } from './app.component'; 4 | 5 | bootstrap(AppComponent, [ 6 | disableDeprecatedForms(), 7 | provideForms() 8 | ]) 9 | .catch((err: any) => console.error(err)); 10 | 11 | 12 | -------------------------------------------------------------------------------- /step24_forms_validation/readme.md: -------------------------------------------------------------------------------- 1 | Read: 2 | 3 | https://angular.io/docs/ts/latest/guide/forms.html 4 | 5 | Forms in Angular 2 Chapter of ng-book 2: 6 | 7 | https://www.ng-book.com/2/ -------------------------------------------------------------------------------- /step24_forms_validation/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step24_forms_validation/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step24_forms_validation/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step24_forms_validation/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step25_forms_validation_custom/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step25_forms_validation_custom/app/app.component.css: -------------------------------------------------------------------------------- 1 | .margin-20 { 2 | margin-top: 20px; 3 | } -------------------------------------------------------------------------------- /step25_forms_validation_custom/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,sBAAqD,gBAAgB,CAAC,CAAA;AACtE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,EAAE;IACtB,8BAAsB,EAAE;IACxB,oBAAY,EAAE;CACd,CAAC;KACD,KAAK,CAAC,UAAC,GAAQ,IAAK,OAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC,CAAC"} -------------------------------------------------------------------------------- /step25_forms_validation_custom/app/user.interface.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | //# sourceMappingURL=user.interface.js.map -------------------------------------------------------------------------------- /step25_forms_validation_custom/app/user.interface.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"user.interface.js","sourceRoot":"","sources":["user.interface.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /step25_forms_validation_custom/app/user.interface.ts: -------------------------------------------------------------------------------- 1 | export interface User { 2 | username: string; 3 | email: string; 4 | password: string; 5 | confirmPassword: string; 6 | } -------------------------------------------------------------------------------- /step25_forms_validation_custom/readme.md: -------------------------------------------------------------------------------- 1 | Read: 2 | 3 | https://medium.com/@jecelynyeen/how-to-implement-custom-validator-confirm-password-in-angular2-rc-3-622288ba809d#.c5u4bdrmp 4 | 5 | Forms in Angular 2 Chapter of ng-book 2: 6 | 7 | https://www.ng-book.com/2/ -------------------------------------------------------------------------------- /step25_forms_validation_custom/styles.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panacloud/learn-angular/40f27b993922c7c4696f0f3e893fce3dd580b2e0/step25_forms_validation_custom/styles.css -------------------------------------------------------------------------------- /step25_forms_validation_custom/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step25_forms_validation_custom/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step25_forms_validation_custom/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step26_routing/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step26_routing/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAC/C,2BAAqC,cAAc,CAAC,CAAA;AAEpD,oCAAS,CAAC,4BAAY,EAAE;IACtB,iCAAoB;CACrB,CAAC,CAAC,KAAK,CAAC,UAAA,GAAG,IAAI,OAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC,CAAC;AAAA,CAAC"} -------------------------------------------------------------------------------- /step26_routing/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | import { APP_ROUTER_PROVIDERS } from './app.routes'; 4 | 5 | bootstrap(AppComponent, [ 6 | APP_ROUTER_PROVIDERS 7 | ]).catch(err => console.error(err));; 8 | 9 | 10 | -------------------------------------------------------------------------------- /step26_routing/app/page1.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"page1.component.js","sourceRoot":"","sources":["page1.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA0B,eAAe,CAAC,CAAA;AAM1C;IAAA;IAA8B,CAAC;IAJ/B;QAAC,gBAAS,CAAC;YACT,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,kCAAkC;SAC7C,CAAC;;sBAAA;IAC4B,qBAAC;AAAD,CAAC,AAA/B,IAA+B;AAAlB,sBAAc,iBAAI,CAAA"} -------------------------------------------------------------------------------- /step26_routing/app/page1.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'page1', 5 | template: '

Page 1 of Angular 2 App

' 6 | }) 7 | export class Page1Component { } -------------------------------------------------------------------------------- /step26_routing/app/page2.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"page2.component.js","sourceRoot":"","sources":["page2.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA0B,eAAe,CAAC,CAAA;AAM1C;IAAA;IAA8B,CAAC;IAJ/B;QAAC,gBAAS,CAAC;YACT,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,kCAAkC;SAC7C,CAAC;;sBAAA;IAC4B,qBAAC;AAAD,CAAC,AAA/B,IAA+B;AAAlB,sBAAc,iBAAI,CAAA"} -------------------------------------------------------------------------------- /step26_routing/app/page2.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'page2', 5 | template: '

Page 2 of Angular 2 App

' 6 | }) 7 | export class Page2Component { } -------------------------------------------------------------------------------- /step26_routing/readme.md: -------------------------------------------------------------------------------- 1 | https://angular.io/docs/ts/latest/tutorial/toh-pt5.html 2 | 3 | https://angular.io/docs/ts/latest/guide/router.html 4 | 5 | Routing Chapter of ng-book 2: 6 | 7 | https://www.ng-book.com/2/ 8 | 9 | -------------------------------------------------------------------------------- /step26_routing/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step26_routing/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step26_routing/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step26_routing/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step27_routing_parameters/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step27_routing_parameters/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAC/C,2BAAqC,cAAc,CAAC,CAAA;AAEpD,oCAAS,CAAC,4BAAY,EAAE;IACtB,iCAAoB;CACrB,CAAC,CAAC,KAAK,CAAC,UAAA,GAAG,IAAI,OAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC,CAAC;AAAA,CAAC"} -------------------------------------------------------------------------------- /step27_routing_parameters/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | import { APP_ROUTER_PROVIDERS } from './app.routes'; 4 | 5 | bootstrap(AppComponent, [ 6 | APP_ROUTER_PROVIDERS 7 | ]).catch(err => console.error(err));; 8 | 9 | 10 | -------------------------------------------------------------------------------- /step27_routing_parameters/app/page1.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"page1.component.js","sourceRoot":"","sources":["page1.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA0B,eAAe,CAAC,CAAA;AAM1C;IAAA;IAA8B,CAAC;IAJ/B;QAAC,gBAAS,CAAC;YACT,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,kCAAkC;SAC7C,CAAC;;sBAAA;IAC4B,qBAAC;AAAD,CAAC,AAA/B,IAA+B;AAAlB,sBAAc,iBAAI,CAAA"} -------------------------------------------------------------------------------- /step27_routing_parameters/app/page1.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'page1', 5 | template: '

Page 1 of Angular 2 App

' 6 | }) 7 | export class Page1Component { } -------------------------------------------------------------------------------- /step27_routing_parameters/readme.md: -------------------------------------------------------------------------------- 1 | Read: 2 | 3 | https://angular.io/docs/ts/latest/guide/router.html 4 | 5 | Routing Chapter of ng-book 2: 6 | 7 | https://www.ng-book.com/2/ 8 | 9 | -------------------------------------------------------------------------------- /step27_routing_parameters/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step27_routing_parameters/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step27_routing_parameters/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step27_routing_parameters/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step28_routing_parameters_dynamic/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step28_routing_parameters_dynamic/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAC/C,2BAAqC,cAAc,CAAC,CAAA;AAEpD,oCAAS,CAAC,4BAAY,EAAE;IACtB,iCAAoB;CACrB,CAAC,CAAC,KAAK,CAAC,UAAA,GAAG,IAAI,OAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC,CAAC;AAAA,CAAC"} -------------------------------------------------------------------------------- /step28_routing_parameters_dynamic/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | import { APP_ROUTER_PROVIDERS } from './app.routes'; 4 | 5 | bootstrap(AppComponent, [ 6 | APP_ROUTER_PROVIDERS 7 | ]).catch(err => console.error(err));; 8 | 9 | 10 | -------------------------------------------------------------------------------- /step28_routing_parameters_dynamic/app/page1.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"page1.component.js","sourceRoot":"","sources":["page1.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA0B,eAAe,CAAC,CAAA;AAM1C;IAAA;IAA8B,CAAC;IAJ/B;QAAC,gBAAS,CAAC;YACT,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,kCAAkC;SAC7C,CAAC;;sBAAA;IAC4B,qBAAC;AAAD,CAAC,AAA/B,IAA+B;AAAlB,sBAAc,iBAAI,CAAA"} -------------------------------------------------------------------------------- /step28_routing_parameters_dynamic/app/page1.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'page1', 5 | template: '

Page 1 of Angular 2 App

' 6 | }) 7 | export class Page1Component { } -------------------------------------------------------------------------------- /step28_routing_parameters_dynamic/readme.md: -------------------------------------------------------------------------------- 1 | Read: 2 | 3 | https://angular.io/docs/ts/latest/guide/router.html 4 | 5 | Routing Chapter of ng-book 2: 6 | 7 | https://www.ng-book.com/2/ 8 | 9 | -------------------------------------------------------------------------------- /step28_routing_parameters_dynamic/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step28_routing_parameters_dynamic/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step28_routing_parameters_dynamic/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step28_routing_parameters_dynamic/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step29_routing_merge/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step29_routing_merge/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAC/C,2BAAqC,cAAc,CAAC,CAAA;AAEpD,oCAAS,CAAC,4BAAY,EAAE;IACtB,iCAAoB;CACrB,CAAC,CAAC,KAAK,CAAC,UAAA,GAAG,IAAI,OAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC,CAAC;AAAA,CAAC"} -------------------------------------------------------------------------------- /step29_routing_merge/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | import { APP_ROUTER_PROVIDERS } from './app.routes'; 4 | 5 | bootstrap(AppComponent, [ 6 | APP_ROUTER_PROVIDERS 7 | ]).catch(err => console.error(err));; 8 | 9 | 10 | -------------------------------------------------------------------------------- /step29_routing_merge/app/page1.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"page1.component.js","sourceRoot":"","sources":["page1.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA0B,eAAe,CAAC,CAAA;AAM1C;IAAA;IAA8B,CAAC;IAJ/B;QAAC,gBAAS,CAAC;YACT,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,kCAAkC;SAC7C,CAAC;;sBAAA;IAC4B,qBAAC;AAAD,CAAC,AAA/B,IAA+B;AAAlB,sBAAc,iBAAI,CAAA"} -------------------------------------------------------------------------------- /step29_routing_merge/app/page1.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'page1', 5 | template: '

Page 1 of Angular 2 App

' 6 | }) 7 | export class Page1Component { } -------------------------------------------------------------------------------- /step29_routing_merge/app/page2/page2.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"page2.component.js","sourceRoot":"","sources":["page2.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA0B,eAAe,CAAC,CAAA;AAM1C;IAAA;IAA8B,CAAC;IAJ/B;QAAC,gBAAS,CAAC;YACT,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,kCAAkC;SAC7C,CAAC;;sBAAA;IAC4B,qBAAC;AAAD,CAAC,AAA/B,IAA+B;AAAlB,sBAAc,iBAAI,CAAA"} -------------------------------------------------------------------------------- /step29_routing_merge/app/page2/page2.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'page2', 5 | template: '

Page 2 of Angular 2 App

' 6 | }) 7 | export class Page2Component { } -------------------------------------------------------------------------------- /step29_routing_merge/app/page2/page2.routes.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var page2_component_1 = require('./page2.component'); 3 | exports.Page2Routes = [ 4 | { 5 | path: 'page2', 6 | component: page2_component_1.Page2Component 7 | } 8 | ]; 9 | //# sourceMappingURL=page2.routes.js.map -------------------------------------------------------------------------------- /step29_routing_merge/app/page2/page2.routes.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"page2.routes.js","sourceRoot":"","sources":["page2.routes.ts"],"names":[],"mappings":";AACA,gCAA+B,mBAAmB,CAAC,CAAA;AAEtC,mBAAW,GAAiB;IACvC;QACE,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,gCAAc;KAC1B;CACF,CAAC"} -------------------------------------------------------------------------------- /step29_routing_merge/app/page2/page2.routes.ts: -------------------------------------------------------------------------------- 1 | import { provideRouter, RouterConfig } from '@angular/router'; 2 | import { Page2Component } from './page2.component'; 3 | 4 | export const Page2Routes: RouterConfig = [ 5 | { 6 | path: 'page2', 7 | component: Page2Component 8 | } 9 | ]; 10 | 11 | 12 | -------------------------------------------------------------------------------- /step29_routing_merge/readme.md: -------------------------------------------------------------------------------- 1 | https://angular.io/docs/ts/latest/tutorial/toh-pt5.html 2 | 3 | https://angular.io/docs/ts/latest/guide/router.html 4 | 5 | Routing Chapter of ng-book 2: 6 | 7 | https://www.ng-book.com/2/ 8 | 9 | -------------------------------------------------------------------------------- /step29_routing_merge/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step29_routing_merge/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step29_routing_merge/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step29_routing_merge/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step30_routing_child/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step30_routing_child/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAC/C,2BAAqC,cAAc,CAAC,CAAA;AAEpD,oCAAS,CAAC,4BAAY,EAAE;IACtB,iCAAoB;CACrB,CAAC,CAAC,KAAK,CAAC,UAAA,GAAG,IAAI,OAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC,CAAC;AAAA,CAAC"} -------------------------------------------------------------------------------- /step30_routing_child/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | import { APP_ROUTER_PROVIDERS } from './app.routes'; 4 | 5 | bootstrap(AppComponent, [ 6 | APP_ROUTER_PROVIDERS 7 | ]).catch(err => console.error(err));; 8 | 9 | 10 | -------------------------------------------------------------------------------- /step30_routing_child/app/page1.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"page1.component.js","sourceRoot":"","sources":["page1.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA0B,eAAe,CAAC,CAAA;AAM1C;IAAA;IAA8B,CAAC;IAJ/B;QAAC,gBAAS,CAAC;YACT,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,kCAAkC;SAC7C,CAAC;;sBAAA;IAC4B,qBAAC;AAAD,CAAC,AAA/B,IAA+B;AAAlB,sBAAc,iBAAI,CAAA"} -------------------------------------------------------------------------------- /step30_routing_child/app/page1.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'page1', 5 | template: '

Page 1 of Angular 2 App

' 6 | }) 7 | export class Page1Component { } -------------------------------------------------------------------------------- /step30_routing_child/app/section1.page2.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"section1.page2.component.js","sourceRoot":"","sources":["section1.page2.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA0B,eAAe,CAAC,CAAA;AAM1C;IAAA;IAAiC,CAAC;IAJlC;QAAC,gBAAS,CAAC;YACT,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,sBAAsB;SACjC,CAAC;;yBAAA;IAC+B,wBAAC;AAAD,CAAC,AAAlC,IAAkC;AAArB,yBAAiB,oBAAI,CAAA"} -------------------------------------------------------------------------------- /step30_routing_child/app/section1.page2.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'section1', 5 | template: '

Section One

' 6 | }) 7 | export class Section1Component { } -------------------------------------------------------------------------------- /step30_routing_child/app/section2.page2.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"section2.page2.component.js","sourceRoot":"","sources":["section2.page2.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA0B,eAAe,CAAC,CAAA;AAM1C;IAAA;IAAiC,CAAC;IAJlC;QAAC,gBAAS,CAAC;YACT,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,sBAAsB;SACjC,CAAC;;yBAAA;IAC+B,wBAAC;AAAD,CAAC,AAAlC,IAAkC;AAArB,yBAAiB,oBAAI,CAAA"} -------------------------------------------------------------------------------- /step30_routing_child/app/section2.page2.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'section2', 5 | template: '

Section Two

' 6 | }) 7 | export class Section2Component { } -------------------------------------------------------------------------------- /step30_routing_child/readme.md: -------------------------------------------------------------------------------- 1 | https://angular.io/docs/ts/latest/tutorial/toh-pt5.html 2 | 3 | https://angular.io/docs/ts/latest/guide/router.html 4 | 5 | Routing Chapter of ng-book 2: 6 | 7 | https://www.ng-book.com/2/ 8 | 9 | -------------------------------------------------------------------------------- /step30_routing_child/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step30_routing_child/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step30_routing_child/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step30_routing_child/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step31_routing_guards/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step31_routing_guards/app/admin.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"admin.component.js","sourceRoot":"","sources":["admin.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA0B,eAAe,CAAC,CAAA;AAM1C;IAAA;IAA8B,CAAC;IAJ/B;QAAC,gBAAS,CAAC;YACT,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,qBAAqB;SAChC,CAAC;;sBAAA;IAC4B,qBAAC;AAAD,CAAC,AAA/B,IAA+B;AAAlB,sBAAc,iBAAI,CAAA"} -------------------------------------------------------------------------------- /step31_routing_guards/app/admin.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'admin', 5 | template: '

Admin Page

' 6 | }) 7 | export class AdminComponent { } -------------------------------------------------------------------------------- /step31_routing_guards/app/auth.guard.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"auth.guard.js","sourceRoot":"","sources":["auth.guard.ts"],"names":[],"mappings":";AAEA;IAAA;IAKA,CAAC;IAJC,+BAAW,GAAX;QACE,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,CAAA,+CAA+C;IAC9D,CAAC;IACH,gBAAC;AAAD,CAAC,AALD,IAKC;AALY,iBAAS,YAKrB,CAAA"} -------------------------------------------------------------------------------- /step31_routing_guards/app/auth.guard.ts: -------------------------------------------------------------------------------- 1 | import { CanActivate } from '@angular/router'; 2 | 3 | export class AuthGuard implements CanActivate { 4 | canActivate() { 5 | console.log('AuthGuard#canActivate called'); 6 | return false;//if you return true then navigation will occur 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /step31_routing_guards/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAC/C,2BAAqC,cAAc,CAAC,CAAA;AAEpD,oCAAS,CAAC,4BAAY,EAAE;IACtB,iCAAoB;CACrB,CAAC,CAAC,KAAK,CAAC,UAAA,GAAG,IAAI,OAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC,CAAC;AAAA,CAAC"} -------------------------------------------------------------------------------- /step31_routing_guards/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | import { APP_ROUTER_PROVIDERS } from './app.routes'; 4 | 5 | bootstrap(AppComponent, [ 6 | APP_ROUTER_PROVIDERS 7 | ]).catch(err => console.error(err));; 8 | 9 | 10 | -------------------------------------------------------------------------------- /step31_routing_guards/app/page1.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"page1.component.js","sourceRoot":"","sources":["page1.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA0B,eAAe,CAAC,CAAA;AAM1C;IAAA;IAA8B,CAAC;IAJ/B;QAAC,gBAAS,CAAC;YACT,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,kCAAkC;SAC7C,CAAC;;sBAAA;IAC4B,qBAAC;AAAD,CAAC,AAA/B,IAA+B;AAAlB,sBAAc,iBAAI,CAAA"} -------------------------------------------------------------------------------- /step31_routing_guards/app/page1.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'page1', 5 | template: '

Page 1 of Angular 2 App

' 6 | }) 7 | export class Page1Component { } -------------------------------------------------------------------------------- /step31_routing_guards/app/page2.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"page2.component.js","sourceRoot":"","sources":["page2.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA0B,eAAe,CAAC,CAAA;AAM1C;IAAA;IAA8B,CAAC;IAJ/B;QAAC,gBAAS,CAAC;YACT,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,kCAAkC;SAC7C,CAAC;;sBAAA;IAC4B,qBAAC;AAAD,CAAC,AAA/B,IAA+B;AAAlB,sBAAc,iBAAI,CAAA"} -------------------------------------------------------------------------------- /step31_routing_guards/app/page2.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'page2', 5 | template: '

Page 2 of Angular 2 App

' 6 | }) 7 | export class Page2Component { } -------------------------------------------------------------------------------- /step31_routing_guards/readme.md: -------------------------------------------------------------------------------- 1 | https://angular.io/docs/ts/latest/tutorial/toh-pt5.html 2 | 3 | https://angular.io/docs/ts/latest/guide/router.html 4 | 5 | Routing Chapter of ng-book 2: 6 | 7 | https://www.ng-book.com/2/ 8 | 9 | -------------------------------------------------------------------------------- /step31_routing_guards/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step31_routing_guards/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step31_routing_guards/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step31_routing_guards/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step32_services/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step32_services/app/hero.service.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"hero.service.js","sourceRoot":"","sources":["hero.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA2B,eAAe,CAAC,CAAA;AAG3C;IAAA;IAIA,CAAC;IAHC,+BAAS,GAAT;QACE,MAAM,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAJH;QAAC,iBAAU,EAAE;;mBAAA;IAKb,kBAAC;AAAD,CAAC,AAJD,IAIC;AAJY,mBAAW,cAIvB,CAAA"} -------------------------------------------------------------------------------- /step32_services/app/hero.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | 3 | @Injectable() 4 | export class HeroService { 5 | getHeroes() { 6 | return ["Zeeshan", "Taha", "Rehan", "Inam", "Hira"]; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /step32_services/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step32_services/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step32_services/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step32_services/readme.md: -------------------------------------------------------------------------------- 1 | Read: 2 | 3 | https://angular.io/docs/ts/latest/tutorial/toh-pt4.html 4 | 5 | Dependency Injection Chapter of ng-book 2: 6 | 7 | https://www.ng-book.com/2/ -------------------------------------------------------------------------------- /step32_services/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step32_services/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step32_services/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step32_services/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step33_rxjs_rendering_observables/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step33_rxjs_rendering_observables/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step33_rxjs_rendering_observables/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step33_rxjs_rendering_observables/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step33_rxjs_rendering_observables/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step33_rxjs_rendering_observables/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step33_rxjs_rendering_observables/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step33_rxjs_rendering_observables/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step34_rxjs_map_date_pipes/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step34_rxjs_map_date_pipes/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step34_rxjs_map_date_pipes/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step34_rxjs_map_date_pipes/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step34_rxjs_map_date_pipes/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step34_rxjs_map_date_pipes/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step34_rxjs_map_date_pipes/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step34_rxjs_map_date_pipes/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step35_rxjs_click_events_with_subjects/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step35_rxjs_click_events_with_subjects/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step35_rxjs_click_events_with_subjects/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step35_rxjs_click_events_with_subjects/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step35_rxjs_click_events_with_subjects/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step35_rxjs_click_events_with_subjects/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step35_rxjs_click_events_with_subjects/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step35_rxjs_click_events_with_subjects/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step36_rxjs_merge_clicks_intervals/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step36_rxjs_merge_clicks_intervals/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step36_rxjs_merge_clicks_intervals/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step36_rxjs_merge_clicks_intervals/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step36_rxjs_merge_clicks_intervals/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step36_rxjs_merge_clicks_intervals/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step36_rxjs_merge_clicks_intervals/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step36_rxjs_merge_clicks_intervals/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step37_rxjs_states_startwith_scan/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step37_rxjs_states_startwith_scan/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step37_rxjs_states_startwith_scan/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step37_rxjs_states_startwith_scan/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step37_rxjs_states_startwith_scan/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step37_rxjs_states_startwith_scan/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step37_rxjs_states_startwith_scan/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step37_rxjs_states_startwith_scan/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step38_rxjs_mapping_streams_to_values/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step38_rxjs_mapping_streams_to_values/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step38_rxjs_mapping_streams_to_values/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step38_rxjs_mapping_streams_to_values/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step38_rxjs_mapping_streams_to_values/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step38_rxjs_mapping_streams_to_values/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step38_rxjs_mapping_streams_to_values/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step38_rxjs_mapping_streams_to_values/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step39_rxjs_data_services_with_immutables/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step39_rxjs_data_services_with_immutables/app/Todo.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var Todo = (function () { 3 | function Todo(item) { 4 | this.item = item; 5 | } 6 | return Todo; 7 | }()); 8 | exports.Todo = Todo; 9 | //# sourceMappingURL=Todo.js.map -------------------------------------------------------------------------------- /step39_rxjs_data_services_with_immutables/app/Todo.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"Todo.js","sourceRoot":"","sources":["Todo.ts"],"names":[],"mappings":";AAAA;IACI,cAAmB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAE,CAAC;IACtC,WAAC;AAAD,CAAC,AAFD,IAEC;AAFY,YAAI,OAEhB,CAAA"} -------------------------------------------------------------------------------- /step39_rxjs_data_services_with_immutables/app/Todo.ts: -------------------------------------------------------------------------------- 1 | export class Todo { 2 | constructor(public item: string){} 3 | } -------------------------------------------------------------------------------- /step39_rxjs_data_services_with_immutables/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,sBAAqD,gBAAgB,CAAC,CAAA;AACtE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,EAAE;IACtB,8BAAsB,EAAE;IACxB,oBAAY,EAAE;CACd,CAAC,CAAC"} -------------------------------------------------------------------------------- /step39_rxjs_data_services_with_immutables/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { disableDeprecatedForms, provideForms } from '@angular/forms'; 3 | import { AppComponent } from './app.component'; 4 | 5 | bootstrap(AppComponent, [ 6 | disableDeprecatedForms(), 7 | provideForms() 8 | ]); 9 | 10 | 11 | -------------------------------------------------------------------------------- /step39_rxjs_data_services_with_immutables/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step39_rxjs_data_services_with_immutables/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step39_rxjs_data_services_with_immutables/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step40_ngrx_store_state/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step40_ngrx_store_state/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step40_ngrx_store_state/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step40_ngrx_store_state/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step40_ngrx_store_state/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step41_ngrx_dispatching_payloads/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step41_ngrx_dispatching_payloads/readme.md: -------------------------------------------------------------------------------- 1 | Read: 2 | 3 | https://egghead.io/lessons/angular-2-dispatching-action-payloads-to-reducers?course=building-a-time-machine-with-angular-2-and-rxjs 4 | 5 | Source Code: 6 | 7 | https://gist.run/?id=fbcd9e35485b1a50b97e 8 | 9 | 10 | -------------------------------------------------------------------------------- /step41_ngrx_dispatching_payloads/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step41_ngrx_dispatching_payloads/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step41_ngrx_dispatching_payloads/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step41_ngrx_dispatching_payloads/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step42_ngrx_passing_template_input_values/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step42_ngrx_passing_template_input_values/readme.md: -------------------------------------------------------------------------------- 1 | Read: 2 | 3 | https://egghead.io/lessons/angular-2-passing-template-input-values-to-reducers?course=building-a-time-machine-with-angular-2-and-rxjs 4 | 5 | Source Code: 6 | 7 | https://gist.run/?id=bcac9c1e8895171dd1d8 8 | 9 | 10 | -------------------------------------------------------------------------------- /step42_ngrx_passing_template_input_values/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step42_ngrx_passing_template_input_values/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step42_ngrx_passing_template_input_values/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step43_ngrx_passing_observables_to_components/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step43_ngrx_passing_observables_to_components/app/clock.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, Input} from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'clock', 5 | template: `

{{time | date:'medium'}}

` 6 | }) 7 | export class Clock{ 8 | @Input() time; 9 | } -------------------------------------------------------------------------------- /step43_ngrx_passing_observables_to_components/readme.md: -------------------------------------------------------------------------------- 1 | Read: 2 | 3 | https://egghead.io/lessons/angular-2-passing-observables-into-components-with-async-pipe?course=building-a-time-machine-with-angular-2-and-rxjs 4 | 5 | Source Code: 6 | 7 | https://gist.run/?id=f65543f7cd86d8b1fb41 8 | 9 | 10 | -------------------------------------------------------------------------------- /step43_ngrx_passing_observables_to_components/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step43_ngrx_passing_observables_to_components/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step43_ngrx_passing_observables_to_components/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step44_ngrx_adding _second_reducer/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step44_ngrx_adding _second_reducer/app/clock.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"clock.component.js","sourceRoot":"","sources":["clock.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA+B,eAAe,CAAC,CAAA;AAM/C;IAAA;IAEA,CAAC;IADG;QAAC,YAAK,EAAE;;uCAAA;IALZ;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,mCAAmC;SAChD,CAAC;;aAAA;IAGF,YAAC;AAAD,CAAC,AAFD,IAEC;AAFY,aAAK,QAEjB,CAAA"} -------------------------------------------------------------------------------- /step44_ngrx_adding _second_reducer/app/clock.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, Input} from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'clock', 5 | template: `

{{time | date:'medium'}}

` 6 | }) 7 | export class Clock{ 8 | @Input() time; 9 | } -------------------------------------------------------------------------------- /step44_ngrx_adding _second_reducer/readme.md: -------------------------------------------------------------------------------- 1 | Read: 2 | 3 | https://egghead.io/lessons/angular-2-adding-a-second-reducer-to-the-store?course=building-a-time-machine-with-angular-2-and-rxjs 4 | 5 | Source Code: 6 | 7 | https://gist.run/?id=803f13a4d7232d64fd29 8 | 9 | 10 | -------------------------------------------------------------------------------- /step44_ngrx_adding _second_reducer/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step44_ngrx_adding _second_reducer/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step44_ngrx_adding _second_reducer/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step44_ngrx_adding _second_reducer/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step45_ngrx_using_two_reducers_together/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step45_ngrx_using_two_reducers_together/app/clock.component.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"clock.component.js","sourceRoot":"","sources":["clock.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qBAA+B,eAAe,CAAC,CAAA;AAM/C;IAAA;IAEA,CAAC;IADG;QAAC,YAAK,EAAE;;uCAAA;IALZ;QAAC,gBAAS,CAAC;YACP,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,mCAAmC;SAChD,CAAC;;aAAA;IAGF,YAAC;AAAD,CAAC,AAFD,IAEC;AAFY,aAAK,QAEjB,CAAA"} -------------------------------------------------------------------------------- /step45_ngrx_using_two_reducers_together/app/clock.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, Input} from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'clock', 5 | template: `

{{time | date:'medium'}}

` 6 | }) 7 | export class Clock{ 8 | @Input() time; 9 | } -------------------------------------------------------------------------------- /step45_ngrx_using_two_reducers_together/readme.md: -------------------------------------------------------------------------------- 1 | Read: 2 | 3 | https://egghead.io/lessons/angular-2-using-two-reducers-together?course=building-a-time-machine-with-angular-2-and-rxjs 4 | 5 | Source Code: 6 | 7 | https://gist.run/?id=9d1781c8401a5e664226 8 | 9 | 10 | -------------------------------------------------------------------------------- /step45_ngrx_using_two_reducers_together/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step45_ngrx_using_two_reducers_together/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step45_ngrx_using_two_reducers_together/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step46_ngrx_using_value_from store_in_reducer/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step46_ngrx_using_value_from store_in_reducer/app/clock.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, Input} from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'clock', 5 | template: `

{{time | date:'medium'}}

` 6 | }) 7 | export class Clock{ 8 | @Input() time; 9 | } -------------------------------------------------------------------------------- /step46_ngrx_using_value_from store_in_reducer/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step46_ngrx_using_value_from store_in_reducer/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step46_ngrx_using_value_from store_in_reducer/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step47_animations_quick_start/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step47_animations_quick_start/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step47_animations_quick_start/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step47_animations_quick_start/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step47_animations_quick_start/readme.md: -------------------------------------------------------------------------------- 1 | Installed polyfill from: 2 | 3 | https://www.npmjs.com/package/web-animations-js 4 | 5 | 6 | Read: 7 | 8 | https://angular.io/docs/ts/latest/guide/animations.html 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /step47_animations_quick_start/styles.css: -------------------------------------------------------------------------------- 1 | 2 | body { 3 | margin: 2em; 4 | } 5 | -------------------------------------------------------------------------------- /step47_animations_quick_start/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step47_animations_quick_start/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step47_animations_quick_start/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step48_animations_entering_leaving/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step48_animations_entering_leaving/app/hero.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var Hero = (function () { 3 | function Hero(name) { 4 | this.name = name; 5 | this.state = "in"; 6 | } 7 | return Hero; 8 | }()); 9 | exports.Hero = Hero; 10 | //# sourceMappingURL=hero.js.map -------------------------------------------------------------------------------- /step48_animations_entering_leaving/app/hero.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"hero.js","sourceRoot":"","sources":["hero.ts"],"names":[],"mappings":";AAAA;IAIE,cAAY,IAAI;QACZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IAGH,WAAC;AAAD,CAAC,AAVD,IAUC;AAVY,YAAI,OAUhB,CAAA"} -------------------------------------------------------------------------------- /step48_animations_entering_leaving/app/hero.ts: -------------------------------------------------------------------------------- 1 | export class Hero { 2 | name: string; 3 | state: string; 4 | 5 | constructor(name){ 6 | this.name = name; 7 | this.state = "in"; 8 | } 9 | 10 | 11 | } 12 | -------------------------------------------------------------------------------- /step48_animations_entering_leaving/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAC/C,sBAAqD,gBAAgB,CAAC,CAAA;AAEtE,oCAAS,CAAC,4BAAY,EAAE;IACtB,8BAAsB,EAAE;IACxB,oBAAY,EAAE;CACd,CAAC,CAAC"} -------------------------------------------------------------------------------- /step48_animations_entering_leaving/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | import { disableDeprecatedForms, provideForms } from '@angular/forms'; 4 | 5 | bootstrap(AppComponent, [ 6 | disableDeprecatedForms(), 7 | provideForms() 8 | ]); 9 | 10 | 11 | -------------------------------------------------------------------------------- /step48_animations_entering_leaving/readme.md: -------------------------------------------------------------------------------- 1 | Read Example: Entering and Leaving on page: 2 | 3 | https://angular.io/docs/ts/latest/guide/animations.html#!#example-entering-and-leaving 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /step48_animations_entering_leaving/styles.css: -------------------------------------------------------------------------------- 1 | 2 | body { 3 | margin: 2em; 4 | } 5 | -------------------------------------------------------------------------------- /step48_animations_entering_leaving/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step48_animations_entering_leaving/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step48_animations_entering_leaving/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step49_animations_automatic_property_calculation/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step49_animations_automatic_property_calculation/app/hero.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var Hero = (function () { 3 | function Hero(name) { 4 | this.name = name; 5 | this.state = "in"; 6 | } 7 | return Hero; 8 | }()); 9 | exports.Hero = Hero; 10 | //# sourceMappingURL=hero.js.map -------------------------------------------------------------------------------- /step49_animations_automatic_property_calculation/app/hero.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"hero.js","sourceRoot":"","sources":["hero.ts"],"names":[],"mappings":";AAAA;IAIE,cAAY,IAAI;QACZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IAGH,WAAC;AAAD,CAAC,AAVD,IAUC;AAVY,YAAI,OAUhB,CAAA"} -------------------------------------------------------------------------------- /step49_animations_automatic_property_calculation/app/hero.ts: -------------------------------------------------------------------------------- 1 | export class Hero { 2 | name: string; 3 | state: string; 4 | 5 | constructor(name){ 6 | this.name = name; 7 | this.state = "in"; 8 | } 9 | 10 | 11 | } 12 | -------------------------------------------------------------------------------- /step49_animations_automatic_property_calculation/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAC/C,sBAAqD,gBAAgB,CAAC,CAAA;AAEtE,oCAAS,CAAC,4BAAY,EAAE;IACtB,8BAAsB,EAAE;IACxB,oBAAY,EAAE;CACd,CAAC,CAAC"} -------------------------------------------------------------------------------- /step49_animations_automatic_property_calculation/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | import { disableDeprecatedForms, provideForms } from '@angular/forms'; 4 | 5 | bootstrap(AppComponent, [ 6 | disableDeprecatedForms(), 7 | provideForms() 8 | ]); 9 | 10 | 11 | -------------------------------------------------------------------------------- /step49_animations_automatic_property_calculation/readme.md: -------------------------------------------------------------------------------- 1 | Read Example: 2 | 3 | https://angular.io/docs/ts/latest/guide/animations.html#!#automatic-property-calculation 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /step49_animations_automatic_property_calculation/styles.css: -------------------------------------------------------------------------------- 1 | 2 | body { 3 | margin: 2em; 4 | } 5 | -------------------------------------------------------------------------------- /step49_animations_automatic_property_calculation/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step49_animations_automatic_property_calculation/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step49_animations_automatic_property_calculation/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step50_animations_timings/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step50_animations_timings/app/hero.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var Hero = (function () { 3 | function Hero(name) { 4 | this.name = name; 5 | this.state = "in"; 6 | } 7 | return Hero; 8 | }()); 9 | exports.Hero = Hero; 10 | //# sourceMappingURL=hero.js.map -------------------------------------------------------------------------------- /step50_animations_timings/app/hero.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"hero.js","sourceRoot":"","sources":["hero.ts"],"names":[],"mappings":";AAAA;IAIE,cAAY,IAAI;QACZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IAGH,WAAC;AAAD,CAAC,AAVD,IAUC;AAVY,YAAI,OAUhB,CAAA"} -------------------------------------------------------------------------------- /step50_animations_timings/app/hero.ts: -------------------------------------------------------------------------------- 1 | export class Hero { 2 | name: string; 3 | state: string; 4 | 5 | constructor(name){ 6 | this.name = name; 7 | this.state = "in"; 8 | } 9 | 10 | 11 | } 12 | -------------------------------------------------------------------------------- /step50_animations_timings/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAC/C,sBAAqD,gBAAgB,CAAC,CAAA;AAEtE,oCAAS,CAAC,4BAAY,EAAE;IACtB,8BAAsB,EAAE;IACxB,oBAAY,EAAE;CACd,CAAC,CAAC"} -------------------------------------------------------------------------------- /step50_animations_timings/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | import { disableDeprecatedForms, provideForms } from '@angular/forms'; 4 | 5 | bootstrap(AppComponent, [ 6 | disableDeprecatedForms(), 7 | provideForms() 8 | ]); 9 | 10 | 11 | -------------------------------------------------------------------------------- /step50_animations_timings/readme.md: -------------------------------------------------------------------------------- 1 | Read Example: 2 | 3 | https://angular.io/docs/ts/latest/guide/animations.html#!#animation-timing 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /step50_animations_timings/styles.css: -------------------------------------------------------------------------------- 1 | 2 | body { 3 | margin: 2em; 4 | } 5 | -------------------------------------------------------------------------------- /step50_animations_timings/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step50_animations_timings/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step50_animations_timings/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step51_animations_multi_step_with_key_frames/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step51_animations_multi_step_with_key_frames/app/hero.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var Hero = (function () { 3 | function Hero(name) { 4 | this.name = name; 5 | this.state = "in"; 6 | } 7 | return Hero; 8 | }()); 9 | exports.Hero = Hero; 10 | //# sourceMappingURL=hero.js.map -------------------------------------------------------------------------------- /step51_animations_multi_step_with_key_frames/app/hero.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"hero.js","sourceRoot":"","sources":["hero.ts"],"names":[],"mappings":";AAAA;IAIE,cAAY,IAAI;QACZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IAGH,WAAC;AAAD,CAAC,AAVD,IAUC;AAVY,YAAI,OAUhB,CAAA"} -------------------------------------------------------------------------------- /step51_animations_multi_step_with_key_frames/app/hero.ts: -------------------------------------------------------------------------------- 1 | export class Hero { 2 | name: string; 3 | state: string; 4 | 5 | constructor(name){ 6 | this.name = name; 7 | this.state = "in"; 8 | } 9 | 10 | 11 | } 12 | -------------------------------------------------------------------------------- /step51_animations_multi_step_with_key_frames/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAC/C,sBAAqD,gBAAgB,CAAC,CAAA;AAEtE,oCAAS,CAAC,4BAAY,EAAE;IACtB,8BAAsB,EAAE;IACxB,oBAAY,EAAE;CACd,CAAC,CAAC"} -------------------------------------------------------------------------------- /step51_animations_multi_step_with_key_frames/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | import { disableDeprecatedForms, provideForms } from '@angular/forms'; 4 | 5 | bootstrap(AppComponent, [ 6 | disableDeprecatedForms(), 7 | provideForms() 8 | ]); 9 | 10 | 11 | -------------------------------------------------------------------------------- /step51_animations_multi_step_with_key_frames/readme.md: -------------------------------------------------------------------------------- 1 | Read Example: 2 | 3 | https://angular.io/docs/ts/latest/guide/animations.html#!#multi-step-animations-with-keyframes 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /step51_animations_multi_step_with_key_frames/styles.css: -------------------------------------------------------------------------------- 1 | 2 | body { 3 | margin: 2em; 4 | } 5 | -------------------------------------------------------------------------------- /step51_animations_multi_step_with_key_frames/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step51_animations_multi_step_with_key_frames/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step51_animations_multi_step_with_key_frames/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step52_animations_parallel_groups/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step52_animations_parallel_groups/app/hero.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var Hero = (function () { 3 | function Hero(name) { 4 | this.name = name; 5 | this.state = "in"; 6 | } 7 | return Hero; 8 | }()); 9 | exports.Hero = Hero; 10 | //# sourceMappingURL=hero.js.map -------------------------------------------------------------------------------- /step52_animations_parallel_groups/app/hero.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"hero.js","sourceRoot":"","sources":["hero.ts"],"names":[],"mappings":";AAAA;IAIE,cAAY,IAAI;QACZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IAGH,WAAC;AAAD,CAAC,AAVD,IAUC;AAVY,YAAI,OAUhB,CAAA"} -------------------------------------------------------------------------------- /step52_animations_parallel_groups/app/hero.ts: -------------------------------------------------------------------------------- 1 | export class Hero { 2 | name: string; 3 | state: string; 4 | 5 | constructor(name){ 6 | this.name = name; 7 | this.state = "in"; 8 | } 9 | 10 | 11 | } 12 | -------------------------------------------------------------------------------- /step52_animations_parallel_groups/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAC/C,sBAAqD,gBAAgB,CAAC,CAAA;AAEtE,oCAAS,CAAC,4BAAY,EAAE;IACtB,8BAAsB,EAAE;IACxB,oBAAY,EAAE;CACd,CAAC,CAAC"} -------------------------------------------------------------------------------- /step52_animations_parallel_groups/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | import { disableDeprecatedForms, provideForms } from '@angular/forms'; 4 | 5 | bootstrap(AppComponent, [ 6 | disableDeprecatedForms(), 7 | provideForms() 8 | ]); 9 | 10 | 11 | -------------------------------------------------------------------------------- /step52_animations_parallel_groups/readme.md: -------------------------------------------------------------------------------- 1 | Read Example: 2 | 3 | https://angular.io/docs/ts/latest/guide/animations.html#!#parallel-animation-groups 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /step52_animations_parallel_groups/styles.css: -------------------------------------------------------------------------------- 1 | 2 | body { 3 | margin: 2em; 4 | } 5 | -------------------------------------------------------------------------------- /step52_animations_parallel_groups/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step52_animations_parallel_groups/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step52_animations_parallel_groups/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step53_animations_page_transitions/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step53_animations_page_transitions/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAC/C,2BAAqC,cAAc,CAAC,CAAA;AAEpD,oCAAS,CAAC,4BAAY,EAAE;IACtB,iCAAoB;CACrB,CAAC,CAAC,KAAK,CAAC,UAAA,GAAG,IAAI,OAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC,CAAC;AAAA,CAAC"} -------------------------------------------------------------------------------- /step53_animations_page_transitions/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | import { APP_ROUTER_PROVIDERS } from './app.routes'; 4 | 5 | bootstrap(AppComponent, [ 6 | APP_ROUTER_PROVIDERS 7 | ]).catch(err => console.error(err));; 8 | 9 | 10 | -------------------------------------------------------------------------------- /step53_animations_page_transitions/readme.md: -------------------------------------------------------------------------------- 1 | Read: 2 | 3 | https://github.com/angular/angular/issues/9350#issuecomment-227354109 4 | 5 | http://stackoverflow.com/questions/37904860/angular-2-animate-no-visible-effect-of-the-void-transition-when-changin?rq=1 6 | -------------------------------------------------------------------------------- /step53_animations_page_transitions/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step53_animations_page_transitions/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step53_animations_page_transitions/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step53_animations_page_transitions/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step54_view_encapsulation/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step54_view_encapsulation/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step54_view_encapsulation/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step54_view_encapsulation/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step54_view_encapsulation/styles.css: -------------------------------------------------------------------------------- 1 | .test {background: green;} -------------------------------------------------------------------------------- /step54_view_encapsulation/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step54_view_encapsulation/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step54_view_encapsulation/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step55_css_host_selector/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step55_css_host_selector/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_component_1 = require('./app.component'); 4 | platform_browser_dynamic_1.bootstrap(app_component_1.AppComponent); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /step55_css_host_selector/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAE/C,oCAAS,CAAC,4BAAY,CAAC,CAAC"} -------------------------------------------------------------------------------- /step55_css_host_selector/app/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrap } from '@angular/platform-browser-dynamic'; 2 | import { AppComponent } from './app.component'; 3 | 4 | bootstrap(AppComponent); 5 | 6 | 7 | -------------------------------------------------------------------------------- /step55_css_host_selector/readme.md: -------------------------------------------------------------------------------- 1 | Read: 2 | 3 | https://toddmotto.com/emulated-native-shadow-dom-angular-2-view-encapsulation#web-component-footsteps 4 | 5 | 6 | As we use ViewEncapsulation.Native, therefore the component will only show in browsers which support shadow DOM. -------------------------------------------------------------------------------- /step55_css_host_selector/styles.css: -------------------------------------------------------------------------------- 1 | .test {background: green;} -------------------------------------------------------------------------------- /step55_css_host_selector/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step55_css_host_selector/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 5 | "node": "registry:dt/node#6.0.0+20160621231320" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /step55_css_host_selector/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | -------------------------------------------------------------------------------- /step56_firebase/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step56_firebase/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAC/C,6BAAoD,cAAc,CAAC,CAAA;AAGnE,oCAAS,CAAC,4BAAY,EAAE;IACtB,iCAAkB;IAClB,4BAA4B;IAC5B,8BAAe,CAAC;QACd,MAAM,EAAE,YAAY;QACpB,UAAU,EAAE,2BAA2B;QACvC,WAAW,EAAE,qBAAqB;QAClC,aAAa,EAAE,uBAAuB;KACvC,CAAC;CACH,CAAC,CAAC"} -------------------------------------------------------------------------------- /step56_firebase/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step56_firebase/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step56_firebase/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "firebase3": "file:node_modules/angularfire2/firebase3.d.ts", 5 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 6 | "node": "registry:dt/node#6.0.0+20160621231320" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /step56_firebase/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | /// 5 | -------------------------------------------------------------------------------- /step57_firebase_list_crud/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step57_firebase_list_crud/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAC/C,6BAAoD,cAAc,CAAC,CAAA;AAGnE,oCAAS,CAAC,4BAAY,EAAE;IACtB,iCAAkB;IAClB,4BAA4B;IAC5B,8BAAe,CAAC;QACd,MAAM,EAAE,EAAE;QACV,UAAU,EAAE,EAAE;QACd,WAAW,EAAE,EAAE;QACf,aAAa,EAAE,EAAE;KAClB,CAAC;CACH,CAAC,CAAC"} -------------------------------------------------------------------------------- /step57_firebase_list_crud/readme.md: -------------------------------------------------------------------------------- 1 | Read: 2 | 3 | https://github.com/angular/angularfire2/blob/master/docs/3-retrieving-data-as-lists.md -------------------------------------------------------------------------------- /step57_firebase_list_crud/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step57_firebase_list_crud/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step57_firebase_list_crud/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "firebase3": "file:node_modules/angularfire2/firebase3.d.ts", 5 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 6 | "node": "registry:dt/node#6.0.0+20160621231320" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /step57_firebase_list_crud/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | /// 5 | -------------------------------------------------------------------------------- /step58_firebase_object/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step58_firebase_object/app/main.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";AAAA,yCAA6B,mCAAmC,CAAC,CAAA;AACjE,8BAA6B,iBAAiB,CAAC,CAAA;AAC/C,6BAAoD,cAAc,CAAC,CAAA;AAGnE,oCAAS,CAAC,4BAAY,EAAE;IACtB,iCAAkB;IAClB,4BAA4B;IAC5B,8BAAe,CAAC;QACd,MAAM,EAAE,EAAE;QACV,UAAU,EAAE,EAAE;QACd,WAAW,EAAE,EAAE;QACf,aAAa,EAAE,EAAE;KAClB,CAAC;CACH,CAAC,CAAC"} -------------------------------------------------------------------------------- /step58_firebase_object/readme.md: -------------------------------------------------------------------------------- 1 | Read: 2 | 3 | https://github.com/angular/angularfire2/blob/master/docs/2-retrieving-data-as-objects.md 4 | -------------------------------------------------------------------------------- /step58_firebase_object/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step58_firebase_object/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step58_firebase_object/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "firebase3": "file:node_modules/angularfire2/firebase3.d.ts", 5 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 6 | "node": "registry:dt/node#6.0.0+20160621231320" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /step58_firebase_object/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | /// 5 | -------------------------------------------------------------------------------- /step59_firebase_object_crud/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step59_firebase_object_crud/readme.md: -------------------------------------------------------------------------------- 1 | Read: 2 | 3 | https://github.com/angular/angularfire2/blob/master/docs/2-retrieving-data-as-objects.md 4 | -------------------------------------------------------------------------------- /step59_firebase_object_crud/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step59_firebase_object_crud/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step59_firebase_object_crud/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "firebase3": "file:node_modules/angularfire2/firebase3.d.ts", 5 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 6 | "node": "registry:dt/node#6.0.0+20160621231320" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /step59_firebase_object_crud/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | /// 5 | -------------------------------------------------------------------------------- /step60_firebase_one_to_many/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /step60_firebase_one_to_many/styles.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: #369; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 250%; 5 | } 6 | body { 7 | margin: 2em; 8 | } 9 | 10 | /* 11 | * See https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css 12 | * for the full set of master styles used by the documentation samples 13 | */ 14 | -------------------------------------------------------------------------------- /step60_firebase_one_to_many/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": false 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /step60_firebase_one_to_many/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "core-js": "registry:dt/core-js#0.0.0+20160602141332", 4 | "firebase3": "file:node_modules/angularfire2/firebase3.d.ts", 5 | "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 6 | "node": "registry:dt/node#6.0.0+20160621231320" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /step60_firebase_one_to_many/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | /// 5 | --------------------------------------------------------------------------------