├── .angulardoc.json ├── .gitignore ├── README.md ├── angular-hello-world ├── .editorconfig ├── .gitignore ├── README.md ├── angular.json ├── browserslist ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.json ├── karma.conf.js ├── package-lock.json ├── package.json ├── src │ ├── app │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── hello-world │ │ │ ├── hello-world.component.css │ │ │ ├── hello-world.component.html │ │ │ ├── hello-world.component.spec.ts │ │ │ └── hello-world.component.ts │ │ ├── user-item │ │ │ ├── user-item.component.css │ │ │ ├── user-item.component.html │ │ │ ├── user-item.component.spec.ts │ │ │ └── user-item.component.ts │ │ └── user-list │ │ │ ├── user-list.component.css │ │ │ ├── user-list.component.html │ │ │ ├── user-list.component.spec.ts │ │ │ └── user-list.component.ts │ ├── assets │ │ └── .gitkeep │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── styles.css │ └── test.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.spec.json └── tslint.json ├── angular-reddit ├── .editorconfig ├── .gitignore ├── README.md ├── angular.json ├── browserslist ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.json ├── karma.conf.js ├── package-lock.json ├── package.json ├── src │ ├── app │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ └── vendor │ │ │ ├── semantic.min.css │ │ │ └── themes │ │ │ └── default │ │ │ └── assets │ │ │ ├── fonts │ │ │ ├── icons.eot │ │ │ ├── icons.otf │ │ │ ├── icons.svg │ │ │ ├── icons.ttf │ │ │ ├── icons.woff │ │ │ └── icons.woff2 │ │ │ └── images │ │ │ └── flags.png │ ├── assets │ │ ├── .gitkeep │ │ └── images │ │ │ ├── favicon-32x32.png │ │ │ ├── favicon.ico │ │ │ └── ng-book-2-minibook.png │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── styles.css │ └── test.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.spec.json └── tslint.json ├── ng-book-code ├── .gitignore ├── README.md ├── advanced-components │ ├── .editorconfig │ ├── .gitignore │ ├── .test.bats │ ├── README.md │ ├── angular.json │ ├── browserslist │ ├── e2e │ │ ├── app.e2e-spec.ts │ │ ├── app.po.ts │ │ └── tsconfig.e2e.json │ ├── karma.conf.js │ ├── package.json │ ├── protractor.conf.js │ ├── src │ │ ├── app │ │ │ ├── app.component.html │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── change-detection │ │ │ │ ├── change-detection.module.ts │ │ │ │ ├── observables-demo │ │ │ │ │ ├── observable-change-detection.component.ts │ │ │ │ │ └── observables-demo.component.ts │ │ │ │ └── on-push-demo │ │ │ │ │ ├── default-change-detection.component.html │ │ │ │ │ ├── default-change-detection.component.ts │ │ │ │ │ ├── on-push-change-detection.component.html │ │ │ │ │ ├── on-push-change-detection.component.ts │ │ │ │ │ ├── on-push-demo.component.ts │ │ │ │ │ └── profile.model.ts │ │ │ ├── content-projection │ │ │ │ ├── content-projection-demo │ │ │ │ │ ├── content-projection-demo.component.ts │ │ │ │ │ └── message.component.ts │ │ │ │ └── content-projection.module.ts │ │ │ ├── example.model.ts │ │ │ ├── host │ │ │ │ ├── host.module.ts │ │ │ │ └── popup-demo │ │ │ │ │ ├── popup-demo.component.html │ │ │ │ │ ├── popup-demo.component.ts │ │ │ │ │ ├── popup.directive.ts │ │ │ │ │ ├── profile-card.component.html │ │ │ │ │ ├── profile-card.component.ts │ │ │ │ │ └── steps │ │ │ │ │ ├── host-1.ts │ │ │ │ │ ├── host-2.ts │ │ │ │ │ ├── host-3.ts │ │ │ │ │ └── host-4.ts │ │ │ ├── intro │ │ │ │ ├── intro.component.html │ │ │ │ └── intro.component.ts │ │ │ ├── lifecycle │ │ │ │ ├── all-hooks │ │ │ │ │ ├── all-hooks-demo.component.html │ │ │ │ │ ├── all-hooks-demo.component.ts │ │ │ │ │ ├── all-hooks.component.html │ │ │ │ │ └── all-hooks.component.ts │ │ │ │ ├── differs │ │ │ │ │ ├── comment.component.html │ │ │ │ │ ├── comment.component.ts │ │ │ │ │ ├── comments-list.component.html │ │ │ │ │ ├── comments-list.component.ts │ │ │ │ │ ├── differs-demo.component.html │ │ │ │ │ └── differs-demo.component.ts │ │ │ │ ├── lifecycle.module.ts │ │ │ │ ├── on-changes │ │ │ │ │ ├── on-changes-demo.component.html │ │ │ │ │ ├── on-changes-demo.component.ts │ │ │ │ │ ├── on-changes.component.html │ │ │ │ │ └── on-changes.component.ts │ │ │ │ └── on-init │ │ │ │ │ ├── on-init-demo.component.html │ │ │ │ │ ├── on-init-demo.component.ts │ │ │ │ │ └── on-init.component.ts │ │ │ ├── sidebar │ │ │ │ ├── sidebar-item.component.html │ │ │ │ ├── sidebar-item.component.ts │ │ │ │ ├── sidebar.component.html │ │ │ │ └── sidebar.component.ts │ │ │ ├── styling │ │ │ │ ├── external-style │ │ │ │ │ ├── external-style.component.css │ │ │ │ │ └── external-style.component.ts │ │ │ │ ├── inline-style │ │ │ │ │ └── inline-style.component.ts │ │ │ │ ├── native-encapsulation │ │ │ │ │ └── native-encapsulation.component.ts │ │ │ │ ├── no-encapsulation │ │ │ │ │ └── no-encapsulation.component.ts │ │ │ │ ├── styling-demo │ │ │ │ │ └── styling-demo.component.ts │ │ │ │ └── styling.module.ts │ │ │ ├── tabs │ │ │ │ ├── content-tabs-demo │ │ │ │ │ ├── content-tab.component.html │ │ │ │ │ ├── content-tab.component.ts │ │ │ │ │ ├── content-tabs-demo.component.html │ │ │ │ │ ├── content-tabs-demo.component.ts │ │ │ │ │ ├── content-tabset.component.html │ │ │ │ │ └── content-tabset.component.ts │ │ │ │ └── tabs.module.ts │ │ │ └── templates │ │ │ │ ├── ng-book-for │ │ │ │ ├── ng-book-for-demo.component.html │ │ │ │ ├── ng-book-for-demo.component.ts │ │ │ │ └── ng-book-for.directive.ts │ │ │ │ ├── ng-book-if │ │ │ │ ├── ng-book-if-demo.component.html │ │ │ │ ├── ng-book-if-demo.component.ts │ │ │ │ └── ng-book-if.directive.ts │ │ │ │ └── templates.module.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ ├── images │ │ │ │ ├── avatars │ │ │ │ │ ├── elliot.jpg │ │ │ │ │ ├── helen.jpg │ │ │ │ │ ├── jenny.jpg │ │ │ │ │ ├── joe.jpg │ │ │ │ │ ├── justen.jpg │ │ │ │ │ └── matt.jpg │ │ │ │ ├── favicon-32x32.png │ │ │ │ ├── favicon.ico │ │ │ │ └── ng-book-2-minibook.png │ │ │ └── vendor │ │ │ │ ├── semantic.min.css │ │ │ │ └── themes │ │ │ │ └── default │ │ │ │ └── assets │ │ │ │ ├── fonts │ │ │ │ ├── icons.eot │ │ │ │ ├── icons.otf │ │ │ │ ├── icons.svg │ │ │ │ ├── icons.ttf │ │ │ │ ├── icons.woff │ │ │ │ └── icons.woff2 │ │ │ │ └── images │ │ │ │ └── flags.png │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.css │ │ ├── test.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ └── typings.d.ts │ ├── tsconfig.json │ └── tslint.json ├── built-in-directives │ ├── .editorconfig │ ├── .gitignore │ ├── .test.bats │ ├── README.md │ ├── angular.json │ ├── browserslist │ ├── e2e │ │ ├── app.e2e-spec.ts │ │ ├── app.po.ts │ │ └── tsconfig.e2e.json │ ├── karma.conf.js │ ├── package.json │ ├── protractor.conf.js │ ├── src │ │ ├── app │ │ │ ├── app.component.html │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── example.model.ts │ │ │ ├── intro │ │ │ │ ├── intro.component.html │ │ │ │ └── intro.component.ts │ │ │ ├── ng-class-example │ │ │ │ ├── ng-class-example.component.html │ │ │ │ └── ng-class-example.component.ts │ │ │ ├── ng-for-example │ │ │ │ ├── ng-for-example.component.html │ │ │ │ └── ng-for-example.component.ts │ │ │ ├── ng-non-bindable-example │ │ │ │ ├── ng-non-bindable-example.component.html │ │ │ │ └── ng-non-bindable-example.component.ts │ │ │ ├── ng-style-example │ │ │ │ ├── ng-style-example.component.html │ │ │ │ └── ng-style-example.component.ts │ │ │ ├── ng-switch-example │ │ │ │ ├── ng-switch-example.component.html │ │ │ │ └── ng-switch-example.component.ts │ │ │ └── sidebar │ │ │ │ ├── sidebar-item.component.html │ │ │ │ ├── sidebar-item.component.ts │ │ │ │ ├── sidebar.component.html │ │ │ │ └── sidebar.component.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ ├── images │ │ │ │ ├── favicon-32x32.png │ │ │ │ ├── favicon.ico │ │ │ │ └── ng-book-2-minibook.png │ │ │ └── vendor │ │ │ │ ├── semantic.min.css │ │ │ │ └── themes │ │ │ │ └── default │ │ │ │ └── assets │ │ │ │ ├── fonts │ │ │ │ ├── icons.eot │ │ │ │ ├── icons.otf │ │ │ │ ├── icons.svg │ │ │ │ ├── icons.ttf │ │ │ │ ├── icons.woff │ │ │ │ └── icons.woff2 │ │ │ │ └── images │ │ │ │ └── flags.png │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.css │ │ ├── test.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ └── typings.d.ts │ ├── tsconfig.json │ └── tslint.json ├── dependency-injection │ ├── .editorconfig │ ├── .gitignore │ ├── .test.bats │ ├── README.md │ ├── angular.json │ ├── browserslist │ ├── e2e │ │ ├── app.e2e-spec.ts │ │ ├── app.po.ts │ │ └── tsconfig.e2e.json │ ├── karma.conf.js │ ├── package.json │ ├── protractor.conf.js │ ├── src │ │ ├── app │ │ │ ├── analytics-demo │ │ │ │ ├── analytics-demo.component.css │ │ │ │ ├── analytics-demo.component.html │ │ │ │ ├── analytics-demo.component.spec.ts │ │ │ │ ├── analytics-demo.component.ts │ │ │ │ ├── analytics-demo.interface.ts │ │ │ │ ├── analytics-demo.module.1.ts │ │ │ │ └── analytics-demo.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── example.model.ts │ │ │ ├── intro │ │ │ │ ├── intro.component.html │ │ │ │ └── intro.component.ts │ │ │ ├── price-service-demo │ │ │ │ ├── price-service-demo.module.ts │ │ │ │ ├── price-service.interface.ts │ │ │ │ ├── price.service.1.ts │ │ │ │ ├── price.service.mock.ts │ │ │ │ ├── price.service.spec.ts │ │ │ │ ├── price.service.ts │ │ │ │ ├── product.model.1.ts │ │ │ │ ├── product.model.ts │ │ │ │ └── product.spec.ts │ │ │ ├── services │ │ │ │ ├── analytics.service.ts │ │ │ │ └── user.service.ts │ │ │ ├── sidebar │ │ │ │ ├── sidebar-item.component.html │ │ │ │ ├── sidebar-item.component.ts │ │ │ │ ├── sidebar.component.html │ │ │ │ └── sidebar.component.ts │ │ │ └── user-demo │ │ │ │ ├── user-demo.component.css │ │ │ │ ├── user-demo.component.html │ │ │ │ ├── user-demo.component.spec.ts │ │ │ │ ├── user-demo.component.ts │ │ │ │ ├── user-demo.injector.component.ts │ │ │ │ └── user-demo.module.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ ├── images │ │ │ │ ├── favicon-32x32.png │ │ │ │ ├── favicon.ico │ │ │ │ └── ng-book-2-minibook.png │ │ │ └── vendor │ │ │ │ ├── semantic.min.css │ │ │ │ └── themes │ │ │ │ └── default │ │ │ │ └── assets │ │ │ │ ├── fonts │ │ │ │ ├── icons.eot │ │ │ │ ├── icons.otf │ │ │ │ ├── icons.svg │ │ │ │ ├── icons.ttf │ │ │ │ ├── icons.woff │ │ │ │ └── icons.woff2 │ │ │ │ └── images │ │ │ │ └── flags.png │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.css │ │ ├── test.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ └── typings.d.ts │ ├── tsconfig.json │ └── tslint.json ├── first-app │ ├── .gitignore │ ├── angular-hello-world │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── .test.bats │ │ ├── README.md │ │ ├── angular.json │ │ ├── browserslist │ │ ├── e2e │ │ │ ├── protractor.conf.js │ │ │ ├── src │ │ │ │ ├── app.e2e-spec.ts │ │ │ │ └── app.po.ts │ │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.1.html │ │ │ │ ├── app.component.2.html │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── hello-world │ │ │ │ │ ├── hello-world.component.css │ │ │ │ │ ├── hello-world.component.html │ │ │ │ │ ├── hello-world.component.spec.ts │ │ │ │ │ └── hello-world.component.ts │ │ │ │ ├── user-item │ │ │ │ │ ├── user-item.component.1.ts │ │ │ │ │ ├── user-item.component.css │ │ │ │ │ ├── user-item.component.html │ │ │ │ │ ├── user-item.component.spec.ts │ │ │ │ │ └── user-item.component.ts │ │ │ │ └── user-list │ │ │ │ │ ├── user-list.component.1.html │ │ │ │ │ ├── user-list.component.2.html │ │ │ │ │ ├── user-list.component.css │ │ │ │ │ ├── user-list.component.html │ │ │ │ │ ├── user-list.component.spec.ts │ │ │ │ │ └── user-list.component.ts │ │ │ ├── assets │ │ │ │ └── .gitkeep │ │ │ ├── environments │ │ │ │ ├── environment.prod.ts │ │ │ │ └── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── karma.conf.js │ │ │ ├── main.ts │ │ │ ├── polyfills.ts │ │ │ ├── styles.css │ │ │ ├── test.ts │ │ │ ├── tsconfig.app.json │ │ │ ├── tsconfig.spec.json │ │ │ └── tslint.json │ │ ├── tsconfig.json │ │ └── tslint.json │ └── angular-reddit │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── .test.bats │ │ ├── README.md │ │ ├── angular.json │ │ ├── browserslist │ │ ├── e2e │ │ ├── app.e2e-spec.ts │ │ ├── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── protractor.conf.js │ │ ├── src │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── article │ │ │ │ ├── article.component.css │ │ │ │ ├── article.component.html │ │ │ │ ├── article.component.spec.ts │ │ │ │ ├── article.component.ts │ │ │ │ └── article.model.ts │ │ │ ├── index.ts │ │ │ ├── shared │ │ │ │ └── index.ts │ │ │ └── vendor │ │ │ │ ├── semantic.min.css │ │ │ │ └── themes │ │ │ │ └── default │ │ │ │ └── assets │ │ │ │ ├── fonts │ │ │ │ ├── icons.eot │ │ │ │ ├── icons.otf │ │ │ │ ├── icons.svg │ │ │ │ ├── icons.ttf │ │ │ │ ├── icons.woff │ │ │ │ └── icons.woff2 │ │ │ │ └── images │ │ │ │ └── flags.png │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ ├── .npmignore │ │ │ └── images │ │ │ │ ├── favicon-32x32.png │ │ │ │ ├── favicon.ico │ │ │ │ └── ng-book-2-minibook.png │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.css │ │ ├── test.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ └── typings.d.ts │ │ ├── steps │ │ └── src │ │ │ └── app │ │ │ ├── app.component.1.html │ │ │ ├── app.component.1.ts │ │ │ ├── app.component.2.html │ │ │ ├── app.component.2.ts │ │ │ ├── app.component.3.html │ │ │ ├── app.component.3.ts │ │ │ └── article │ │ │ ├── article.component.1.html │ │ │ ├── article.component.1.ts │ │ │ ├── article.component.2.ts │ │ │ ├── article.component.3.ts │ │ │ ├── article.component.4.html │ │ │ └── article.model.1.ts │ │ ├── tsconfig.json │ │ └── tslint.json ├── forms │ ├── .editorconfig │ ├── .gitignore │ ├── .test.bats │ ├── README.md │ ├── angular.json │ ├── browserslist │ ├── e2e │ │ ├── app.e2e-spec.ts │ │ ├── app.po.ts │ │ └── tsconfig.e2e.json │ ├── karma.conf.js │ ├── package.json │ ├── protractor.conf.js │ ├── src │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── demo-form-ng-model │ │ │ │ ├── demo-form-ng-model.component.html │ │ │ │ ├── demo-form-ng-model.component.spec.ts │ │ │ │ └── demo-form-ng-model.component.ts │ │ │ ├── demo-form-sku-with-builder │ │ │ │ ├── demo-form-sku-with-builder.component.html │ │ │ │ ├── demo-form-sku-with-builder.component.spec.ts │ │ │ │ └── demo-form-sku-with-builder.component.ts │ │ │ ├── demo-form-sku │ │ │ │ ├── demo-form-sku.component.html │ │ │ │ ├── demo-form-sku.component.spec.ts │ │ │ │ └── demo-form-sku.component.ts │ │ │ ├── demo-form-with-custom-validation │ │ │ │ ├── demo-form-with-custom-validation.component.html │ │ │ │ ├── demo-form-with-custom-validation.component.spec.ts │ │ │ │ └── demo-form-with-custom-validation.component.ts │ │ │ ├── demo-form-with-events │ │ │ │ ├── demo-form-with-events.component.1.spec.ts │ │ │ │ ├── demo-form-with-events.component.html │ │ │ │ ├── demo-form-with-events.component.spec.ts │ │ │ │ └── demo-form-with-events.component.ts │ │ │ ├── demo-form-with-validations-explicit │ │ │ │ ├── demo-form-with-validations-explicit.component.html │ │ │ │ ├── demo-form-with-validations-explicit.component.spec.ts │ │ │ │ └── demo-form-with-validations-explicit.component.ts │ │ │ ├── demo-form-with-validations-shorthand │ │ │ │ ├── demo-form-with-validations-shorthand.component.html │ │ │ │ ├── demo-form-with-validations-shorthand.component.spec.ts │ │ │ │ └── demo-form-with-validations-shorthand.component.ts │ │ │ ├── example.model.ts │ │ │ ├── intro │ │ │ │ ├── intro.component.html │ │ │ │ └── intro.component.ts │ │ │ ├── sidebar │ │ │ │ ├── sidebar-item.component.html │ │ │ │ ├── sidebar-item.component.ts │ │ │ │ ├── sidebar.component.html │ │ │ │ └── sidebar.component.ts │ │ │ └── utils.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ ├── images │ │ │ │ ├── favicon-32x32.png │ │ │ │ ├── favicon.ico │ │ │ │ └── ng-book-2-minibook.png │ │ │ └── vendor │ │ │ │ ├── semantic.min.css │ │ │ │ └── themes │ │ │ │ └── default │ │ │ │ └── assets │ │ │ │ ├── fonts │ │ │ │ ├── icons.eot │ │ │ │ ├── icons.otf │ │ │ │ ├── icons.svg │ │ │ │ ├── icons.ttf │ │ │ │ ├── icons.woff │ │ │ │ └── icons.woff2 │ │ │ │ └── images │ │ │ │ └── flags.png │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.css │ │ ├── test.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ └── typings.d.ts │ ├── tsconfig.json │ └── tslint.json ├── how-angular-works │ └── inventory-app │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── .test.bats │ │ ├── README.md │ │ ├── angular.json │ │ ├── browserslist │ │ ├── e2e │ │ ├── app.e2e-spec.ts │ │ ├── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── protractor.conf.js │ │ ├── src │ │ ├── app │ │ │ ├── app.component.html │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── price-display │ │ │ │ └── price-display.component.ts │ │ │ ├── product-department │ │ │ │ ├── product-department.component.html │ │ │ │ └── product-department.component.ts │ │ │ ├── product-image │ │ │ │ └── product-image.component.ts │ │ │ ├── product-row │ │ │ │ ├── product-row.component.html │ │ │ │ └── product-row.component.ts │ │ │ ├── product.model.ts │ │ │ └── products-list │ │ │ │ ├── products-list.component.html │ │ │ │ └── products-list.component.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ ├── images │ │ │ │ ├── favicon-32x32.png │ │ │ │ ├── favicon.ico │ │ │ │ ├── ng-book-2-minibook.png │ │ │ │ └── products │ │ │ │ │ ├── black-hat.jpg │ │ │ │ │ ├── black-shoes.jpg │ │ │ │ │ └── blue-jacket.jpg │ │ │ └── vendor │ │ │ │ ├── semantic.min.css │ │ │ │ └── themes │ │ │ │ └── default │ │ │ │ └── assets │ │ │ │ ├── fonts │ │ │ │ ├── icons.eot │ │ │ │ ├── icons.otf │ │ │ │ ├── icons.svg │ │ │ │ ├── icons.ttf │ │ │ │ ├── icons.woff │ │ │ │ └── icons.woff2 │ │ │ │ └── images │ │ │ │ └── flags.png │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.css │ │ ├── test.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ └── typings.d.ts │ │ ├── tsconfig.json │ │ └── tslint.json ├── http │ ├── .editorconfig │ ├── .gitignore │ ├── .test.bats │ ├── README.md │ ├── angular.json │ ├── browserslist │ ├── e2e │ │ ├── app.e2e-spec.ts │ │ ├── app.po.ts │ │ └── tsconfig.e2e.json │ ├── karma.conf.js │ ├── package.json │ ├── protractor.conf.js │ ├── src │ │ ├── app │ │ │ ├── app.component.html │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── more-http-requests │ │ │ │ ├── more-http-requests.component.html │ │ │ │ ├── more-http-requests.component.spec.ts │ │ │ │ └── more-http-requests.component.ts │ │ │ ├── simple-http │ │ │ │ ├── simple-http.component.html │ │ │ │ └── simple-http.component.ts │ │ │ └── you-tube-search │ │ │ │ ├── search-box.component.ts │ │ │ │ ├── search-result.component.html │ │ │ │ ├── search-result.component.ts │ │ │ │ ├── search-result.model.ts │ │ │ │ ├── you-tube-search.component.before.spec.ts │ │ │ │ ├── you-tube-search.component.html │ │ │ │ ├── you-tube-search.component.spec.ts │ │ │ │ ├── you-tube-search.component.ts │ │ │ │ ├── you-tube-search.injectables.ts │ │ │ │ └── you-tube-search.service.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ └── images │ │ │ │ └── loading.gif │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.css │ │ ├── styles.scss │ │ ├── test.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ └── typings.d.ts │ ├── tsconfig.json │ └── tslint.json ├── index.json ├── nativescript │ └── photos-near-me │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── app │ │ ├── .npmignore │ │ ├── App_Resources │ │ │ ├── Android │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── app.gradle │ │ │ │ ├── drawable-hdpi │ │ │ │ │ └── icon.png │ │ │ │ ├── drawable-ldpi │ │ │ │ │ └── icon.png │ │ │ │ ├── drawable-mdpi │ │ │ │ │ └── icon.png │ │ │ │ └── drawable-nodpi │ │ │ │ │ └── splashscreen.9.png │ │ │ └── iOS │ │ │ │ ├── Assets.xcassets │ │ │ │ ├── AppIcon.appiconset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── icon-29.png │ │ │ │ │ ├── icon-29@2x.png │ │ │ │ │ ├── icon-29@3x.png │ │ │ │ │ ├── icon-40.png │ │ │ │ │ ├── icon-40@2x.png │ │ │ │ │ ├── icon-40@3x.png │ │ │ │ │ ├── icon-50.png │ │ │ │ │ ├── icon-50@2x.png │ │ │ │ │ ├── icon-57.png │ │ │ │ │ ├── icon-57@2x.png │ │ │ │ │ ├── icon-60@2x.png │ │ │ │ │ ├── icon-60@3x.png │ │ │ │ │ ├── icon-72.png │ │ │ │ │ ├── icon-72@2x.png │ │ │ │ │ ├── icon-76.png │ │ │ │ │ ├── icon-76@2x.png │ │ │ │ │ └── icon-83.5@2x.png │ │ │ │ ├── Contents.json │ │ │ │ ├── LaunchImage.launchimage │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── Default-568h@2x.png │ │ │ │ │ ├── Default-667h@2x.png │ │ │ │ │ ├── Default-736h@3x.png │ │ │ │ │ ├── Default-Landscape.png │ │ │ │ │ ├── Default-Landscape@2x.png │ │ │ │ │ ├── Default-Landscape@3x.png │ │ │ │ │ ├── Default-Portrait.png │ │ │ │ │ ├── Default-Portrait@2x.png │ │ │ │ │ ├── Default.png │ │ │ │ │ └── Default@2x.png │ │ │ │ ├── LaunchScreen.AspectFill.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── LaunchScreen-AspectFill.png │ │ │ │ │ └── LaunchScreen-AspectFill@2x.png │ │ │ │ └── LaunchScreen.Center.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── LaunchScreen-Center.png │ │ │ │ │ └── LaunchScreen-Center@2x.png │ │ │ │ ├── Info.plist │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ └── build.xcconfig │ │ ├── app.component.ts │ │ ├── app.css │ │ ├── app.module.ts │ │ ├── app.routing.ts │ │ ├── components │ │ │ ├── image-component │ │ │ │ ├── image.component.html │ │ │ │ └── image.component.ts │ │ │ └── imagesList-component │ │ │ │ ├── imagesList.component.html │ │ │ │ └── imagesList.component.ts │ │ ├── config.ts │ │ ├── css │ │ │ ├── core.dark.android.css │ │ │ ├── core.dark.ios.css │ │ │ ├── core.light.android.css │ │ │ └── core.light.ios.css │ │ ├── main.ts │ │ ├── models │ │ │ ├── getInfoResponse.ts │ │ │ └── photosSearchResponse.ts │ │ ├── package.json │ │ └── services │ │ │ ├── flickr.service.ts │ │ │ └── geolocation.service.ts │ │ ├── package.json │ │ ├── references.d.ts │ │ └── tsconfig.json ├── redux │ └── redux-chat │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── .test.bats │ │ ├── README.md │ │ ├── angular.json │ │ ├── browserslist │ │ ├── e2e │ │ ├── app.e2e-spec.ts │ │ ├── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── protractor.conf.js │ │ ├── redux-counter │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── angular.json │ │ ├── browserslist │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── app.state.ts │ │ │ │ ├── app.store.ts │ │ │ │ ├── counter.actions.ts │ │ │ │ └── counter.reducer.ts │ │ │ ├── environments │ │ │ │ ├── environment.prod.ts │ │ │ │ └── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ ├── polyfills.ts │ │ │ ├── styles.css │ │ │ ├── tsconfig.app.json │ │ │ ├── tsconfig.spec.json │ │ │ └── typings.d.ts │ │ ├── tsconfig.json │ │ └── tslint.json │ │ ├── src │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── app.reducer.ts │ │ │ ├── app.store.ts │ │ │ ├── chat-message │ │ │ │ ├── chat-message.component.css │ │ │ │ ├── chat-message.component.html │ │ │ │ ├── chat-message.component.spec.ts │ │ │ │ └── chat-message.component.ts │ │ │ ├── chat-nav-bar │ │ │ │ ├── chat-nav-bar.component.css │ │ │ │ ├── chat-nav-bar.component.html │ │ │ │ ├── chat-nav-bar.component.spec.ts │ │ │ │ └── chat-nav-bar.component.ts │ │ │ ├── chat-page │ │ │ │ ├── chat-page.component.css │ │ │ │ ├── chat-page.component.html │ │ │ │ ├── chat-page.component.spec.ts │ │ │ │ └── chat-page.component.ts │ │ │ ├── chat-thread │ │ │ │ ├── chat-thread.component.css │ │ │ │ ├── chat-thread.component.html │ │ │ │ ├── chat-thread.component.spec.ts │ │ │ │ └── chat-thread.component.ts │ │ │ ├── chat-threads │ │ │ │ ├── chat-threads.component.css │ │ │ │ ├── chat-threads.component.html │ │ │ │ ├── chat-threads.component.spec.ts │ │ │ │ └── chat-threads.component.ts │ │ │ ├── chat-window │ │ │ │ ├── chat-window.component.css │ │ │ │ ├── chat-window.component.html │ │ │ │ ├── chat-window.component.spec.ts │ │ │ │ └── chat-window.component.ts │ │ │ ├── data │ │ │ │ └── chat-example-data.ts │ │ │ ├── message │ │ │ │ └── message.model.ts │ │ │ ├── pipes │ │ │ │ ├── from-now.pipe.spec.ts │ │ │ │ └── from-now.pipe.ts │ │ │ ├── thread │ │ │ │ ├── thread.actions.ts │ │ │ │ ├── thread.model.ts │ │ │ │ └── threads.reducer.ts │ │ │ ├── user │ │ │ │ ├── user.actions.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── users.reducer.ts │ │ │ └── util │ │ │ │ └── uuid.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ ├── css │ │ │ │ ├── chat.scss │ │ │ │ └── styles.scss │ │ │ ├── fonts │ │ │ │ └── bootstrap │ │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ └── images │ │ │ │ ├── avatars │ │ │ │ ├── female-avatar-1.png │ │ │ │ ├── female-avatar-2.png │ │ │ │ ├── female-avatar-3.png │ │ │ │ ├── female-avatar-4.png │ │ │ │ ├── male-avatar-1.png │ │ │ │ ├── male-avatar-2.png │ │ │ │ ├── male-avatar-3.png │ │ │ │ └── male-avatar-4.png │ │ │ │ ├── logos │ │ │ │ ├── Angular2ReduxChatHeaderImage.png │ │ │ │ └── ng-book-2-minibook.png │ │ │ │ └── readme │ │ │ │ ├── full-chat-preview.png │ │ │ │ ├── minimal-redux-ts.png │ │ │ │ ├── ng-book-2-as-book-cover-pigment.png │ │ │ │ ├── redux-chat-echo-bot.png │ │ │ │ ├── redux-chat-initial-state.png │ │ │ │ ├── redux-chat-models.png │ │ │ │ ├── redux-chat-top-level-components.png │ │ │ │ └── working-counter-app.png │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.css │ │ ├── test.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ └── typings.d.ts │ │ ├── tsconfig.json │ │ ├── tslint.json │ │ └── tutorial │ │ ├── .gitignore │ │ ├── .test │ │ └── bats.sh │ │ ├── 01-identity-reducer.ts │ │ ├── 02-adjusting-reducer.ts │ │ ├── 03-adjusting-reducer-switch.ts │ │ ├── 04-plus-action.ts │ │ ├── 05-minimal-store.ts │ │ ├── 06-rx-store.ts │ │ ├── 06-store-w-subscribe.ts │ │ ├── 06b-rx-store.ts │ │ ├── 07-messages-reducer.ts │ │ ├── 08-action-creators.ts │ │ ├── 09-real-redux.ts │ │ ├── lib │ │ └── miniRedux.ts │ │ ├── package.json │ │ ├── redux2.ts │ │ └── tsconfig.json ├── routes │ ├── .gitignore │ ├── music │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── .test.bats │ │ ├── README.md │ │ ├── angular.json │ │ ├── browserslist │ │ ├── e2e │ │ │ ├── app.e2e-spec.ts │ │ │ ├── app.po.ts │ │ │ └── tsconfig.e2e.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── protractor.conf.js │ │ ├── scripts │ │ │ └── spotifyKey.js │ │ ├── src │ │ │ ├── app │ │ │ │ ├── album │ │ │ │ │ ├── album.component.css │ │ │ │ │ ├── album.component.html │ │ │ │ │ ├── album.component.spec.ts │ │ │ │ │ └── album.component.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── artist │ │ │ │ │ ├── artist.component.css │ │ │ │ │ ├── artist.component.html │ │ │ │ │ ├── artist.component.spec.ts │ │ │ │ │ └── artist.component.ts │ │ │ │ ├── search │ │ │ │ │ ├── search.component.css │ │ │ │ │ ├── search.component.html │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ └── search.component.ts │ │ │ │ ├── spotify.service.spec.ts │ │ │ │ ├── spotify.service.ts │ │ │ │ ├── test │ │ │ │ │ ├── spotify.service.mock.ts │ │ │ │ │ ├── test.helpers.ts │ │ │ │ │ └── test.module.ts │ │ │ │ └── track │ │ │ │ │ ├── track.component.css │ │ │ │ │ ├── track.component.html │ │ │ │ │ ├── track.component.spec.ts │ │ │ │ │ └── track.component.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ └── vendor │ │ │ │ │ ├── sportify.scss │ │ │ │ │ └── styles.scss │ │ │ ├── environments │ │ │ │ ├── environment.prod.ts │ │ │ │ ├── environment.ts │ │ │ │ └── spotifyApiKey.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ ├── polyfills.ts │ │ │ ├── styles.css │ │ │ ├── test.ts │ │ │ ├── tsconfig.app.json │ │ │ ├── tsconfig.spec.json │ │ │ └── typings.d.ts │ │ ├── tsconfig.json │ │ └── tslint.json │ └── routing │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── .test.bats │ │ ├── README.md │ │ ├── angular.json │ │ ├── browserslist │ │ ├── e2e │ │ ├── app.e2e-spec.ts │ │ ├── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── protractor.conf.js │ │ ├── src │ │ ├── app │ │ │ ├── about │ │ │ │ ├── about.component.css │ │ │ │ ├── about.component.html │ │ │ │ ├── about.component.spec.ts │ │ │ │ └── about.component.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── auth.service.spec.ts │ │ │ ├── auth.service.ts │ │ │ ├── contact │ │ │ │ ├── contact.component.css │ │ │ │ ├── contact.component.html │ │ │ │ ├── contact.component.spec.ts │ │ │ │ └── contact.component.ts │ │ │ ├── home │ │ │ │ ├── home.component.css │ │ │ │ ├── home.component.html │ │ │ │ ├── home.component.spec.ts │ │ │ │ └── home.component.ts │ │ │ ├── logged-in.guard.spec.ts │ │ │ ├── logged-in.guard.ts │ │ │ ├── login │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.spec.ts │ │ │ │ └── login.component.ts │ │ │ ├── products │ │ │ │ ├── main │ │ │ │ │ ├── main.component.css │ │ │ │ │ ├── main.component.html │ │ │ │ │ ├── main.component.spec.ts │ │ │ │ │ └── main.component.ts │ │ │ │ ├── more-info │ │ │ │ │ ├── more-info.component.css │ │ │ │ │ ├── more-info.component.html │ │ │ │ │ ├── more-info.component.spec.ts │ │ │ │ │ └── more-info.component.ts │ │ │ │ ├── product │ │ │ │ │ ├── product.component.css │ │ │ │ │ ├── product.component.html │ │ │ │ │ ├── product.component.spec.ts │ │ │ │ │ └── product.component.ts │ │ │ │ ├── products.component.css │ │ │ │ ├── products.component.html │ │ │ │ ├── products.component.spec.ts │ │ │ │ ├── products.component.ts │ │ │ │ └── products.module.ts │ │ │ └── protected │ │ │ │ ├── protected.component.css │ │ │ │ ├── protected.component.html │ │ │ │ ├── protected.component.spec.ts │ │ │ │ └── protected.component.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.css │ │ ├── test.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ └── typings.d.ts │ │ ├── tsconfig.json │ │ └── tslint.json ├── rxjs │ └── rxjs-chat │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── .test.bats │ │ ├── .webpack.json │ │ ├── README.md │ │ ├── angular.json │ │ ├── browserslist │ │ ├── e2e │ │ ├── app.e2e-spec.ts │ │ ├── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── protractor.conf.js │ │ ├── src │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── chat-message │ │ │ │ ├── chat-message.component.css │ │ │ │ ├── chat-message.component.html │ │ │ │ ├── chat-message.component.spec.ts │ │ │ │ └── chat-message.component.ts │ │ │ ├── chat-nav-bar │ │ │ │ ├── chat-nav-bar.component.css │ │ │ │ ├── chat-nav-bar.component.html │ │ │ │ ├── chat-nav-bar.component.spec.ts │ │ │ │ └── chat-nav-bar.component.ts │ │ │ ├── chat-page │ │ │ │ ├── chat-page.component.css │ │ │ │ ├── chat-page.component.html │ │ │ │ ├── chat-page.component.spec.ts │ │ │ │ └── chat-page.component.ts │ │ │ ├── chat-thread │ │ │ │ ├── chat-thread.component.css │ │ │ │ ├── chat-thread.component.html │ │ │ │ ├── chat-thread.component.spec.ts │ │ │ │ └── chat-thread.component.ts │ │ │ ├── chat-threads │ │ │ │ ├── chat-threads.component.css │ │ │ │ ├── chat-threads.component.html │ │ │ │ ├── chat-threads.component.spec.ts │ │ │ │ └── chat-threads.component.ts │ │ │ ├── chat-window │ │ │ │ ├── chat-window.component.css │ │ │ │ ├── chat-window.component.html │ │ │ │ ├── chat-window.component.spec.ts │ │ │ │ └── chat-window.component.ts │ │ │ ├── data │ │ │ │ └── chat-example-data.ts │ │ │ ├── message │ │ │ │ ├── message.model.ts │ │ │ │ ├── messages.service.spec.ts │ │ │ │ └── messages.service.ts │ │ │ ├── pipes │ │ │ │ ├── from-now.pipe.spec.ts │ │ │ │ └── from-now.pipe.ts │ │ │ ├── thread │ │ │ │ ├── thread.model.ts │ │ │ │ ├── threads.service.spec.ts │ │ │ │ └── threads.service.ts │ │ │ ├── user │ │ │ │ ├── user.model.ts │ │ │ │ └── users.service.ts │ │ │ └── util │ │ │ │ └── uuid.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ ├── css │ │ │ │ ├── chat.scss │ │ │ │ └── styles.scss │ │ │ ├── fonts │ │ │ │ └── bootstrap │ │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ └── images │ │ │ │ ├── avatars │ │ │ │ ├── female-avatar-1.png │ │ │ │ ├── female-avatar-2.png │ │ │ │ ├── female-avatar-3.png │ │ │ │ ├── female-avatar-4.png │ │ │ │ ├── male-avatar-1.png │ │ │ │ ├── male-avatar-2.png │ │ │ │ ├── male-avatar-3.png │ │ │ │ └── male-avatar-4.png │ │ │ │ ├── logos │ │ │ │ ├── Angular2RxJSChatHeaderImage.png │ │ │ │ └── ng-book-2-minibook.png │ │ │ │ └── readme │ │ │ │ ├── full-chat-preview.png │ │ │ │ ├── ng-book-2-as-book-cover-pigment.png │ │ │ │ ├── rx-chat-echo-bot.png │ │ │ │ ├── rx-chat-models.png │ │ │ │ └── rx-chat-top-level-components.png │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.css │ │ ├── test.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ └── typings.d.ts │ │ ├── tsconfig.json │ │ └── tslint.json ├── typescript │ ├── generics.ts │ └── reports.ts └── upgrade │ ├── hybrid │ ├── .editorconfig │ ├── .gitignore │ ├── .test.bats │ ├── README.md │ ├── angular.json │ ├── browserslist │ ├── e2e │ │ ├── app.e2e-spec.ts │ │ ├── app.po.ts │ │ └── tsconfig.e2e.json │ ├── karma.conf.js │ ├── package.json │ ├── protractor.conf.js │ ├── src │ │ ├── app │ │ │ ├── add-pin │ │ │ │ ├── add-pin.component.css │ │ │ │ ├── add-pin.component.html │ │ │ │ ├── add-pin.component.spec.ts │ │ │ │ └── add-pin.component.ts │ │ │ ├── analytics.service.spec.ts │ │ │ ├── analytics.service.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ └── pin-controls │ │ │ │ ├── pin-controls.component.css │ │ │ │ ├── pin-controls.component.html │ │ │ │ ├── pin-controls.component.spec.ts │ │ │ │ └── pin-controls.component.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ ├── css │ │ │ │ ├── bootstrap.min.css │ │ │ │ ├── interest.css │ │ │ │ └── sf.css │ │ │ ├── data │ │ │ │ └── sample-data.json │ │ │ ├── images │ │ │ │ ├── avatars │ │ │ │ │ ├── 25426965@N08.jpg │ │ │ │ │ ├── 26265986@N00.jpg │ │ │ │ │ ├── 30811353@N04.jpg │ │ │ │ │ ├── 30815420@N00.jpg │ │ │ │ │ ├── 32399948@N06.jpg │ │ │ │ │ ├── 42826303@N00.jpg │ │ │ │ │ ├── 44124348109@N01.jpg │ │ │ │ │ ├── 51527254@N02.jpg │ │ │ │ │ ├── 7562944@N06.jpg │ │ │ │ │ ├── 7940758@N07.jpg │ │ │ │ │ ├── 97286492@N00.jpg │ │ │ │ │ └── me.jpg │ │ │ │ ├── icons │ │ │ │ │ ├── Heart-Empty.png │ │ │ │ │ └── Heart-Red.png │ │ │ │ └── pins │ │ │ │ │ ├── 106033588_167d811702_o.jpg │ │ │ │ │ ├── 18690623833_5f21f6e248_o.jpg │ │ │ │ │ ├── 19311217795_b57b6293b3_o.jpg │ │ │ │ │ ├── 2389719785_2bee9f49b3_o.jpg │ │ │ │ │ ├── 2655460065_381b1b25e2_o.jpg │ │ │ │ │ ├── 2927304508_d28363967c_o.jpg │ │ │ │ │ ├── 3714437087_5f1b1a6381_o.jpg │ │ │ │ │ ├── 3714916723_938365e9a2_o.jpg │ │ │ │ │ ├── 4422575066_7d5c4c41e7_o.jpg │ │ │ │ │ ├── 4449613634_016c827042_o.jpg │ │ │ │ │ ├── 6819859061_25d05ef2e1_o.jpg │ │ │ │ │ ├── 6854992490_e380a504b9_o.jpg │ │ │ │ │ ├── 6863434196_9a963a1023_o.jpg │ │ │ │ │ ├── 9071808685_58c2c61efc_o.jpg │ │ │ │ │ ├── cat.jpg │ │ │ │ │ └── cat2.jpg │ │ │ └── templates │ │ │ │ ├── home.html │ │ │ │ └── pin.html │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── js │ │ │ ├── app.d.ts │ │ │ ├── app.js │ │ │ ├── data │ │ │ │ └── sample-data.json │ │ │ └── vendor │ │ │ │ ├── angular-ui-router.js │ │ │ │ ├── angular.js │ │ │ │ └── lodash.js │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.css │ │ ├── test.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ └── typings.d.ts │ ├── tsconfig.json │ └── tslint.json │ └── ng1 │ ├── .gitignore │ ├── README.md │ ├── css │ ├── bootstrap.min.css │ ├── interest.css │ └── sf.css │ ├── images │ ├── avatars │ │ ├── 25426965@N08.jpg │ │ ├── 26265986@N00.jpg │ │ ├── 30811353@N04.jpg │ │ ├── 30815420@N00.jpg │ │ ├── 32399948@N06.jpg │ │ ├── 42826303@N00.jpg │ │ ├── 44124348109@N01.jpg │ │ ├── 51527254@N02.jpg │ │ ├── 7562944@N06.jpg │ │ ├── 7940758@N07.jpg │ │ ├── 97286492@N00.jpg │ │ └── me.jpg │ ├── icons │ │ ├── Heart-Empty.png │ │ └── Heart-Red.png │ └── pins │ │ ├── 106033588_167d811702_o.jpg │ │ ├── 18690623833_5f21f6e248_o.jpg │ │ ├── 19311217795_b57b6293b3_o.jpg │ │ ├── 2389719785_2bee9f49b3_o.jpg │ │ ├── 2655460065_381b1b25e2_o.jpg │ │ ├── 2927304508_d28363967c_o.jpg │ │ ├── 3714437087_5f1b1a6381_o.jpg │ │ ├── 3714916723_938365e9a2_o.jpg │ │ ├── 4422575066_7d5c4c41e7_o.jpg │ │ ├── 4449613634_016c827042_o.jpg │ │ ├── 6819859061_25d05ef2e1_o.jpg │ │ ├── 6854992490_e380a504b9_o.jpg │ │ ├── 6863434196_9a963a1023_o.jpg │ │ ├── 9071808685_58c2c61efc_o.jpg │ │ ├── cat.jpg │ │ └── cat2.jpg │ ├── index.html │ ├── js │ ├── app.js │ ├── data │ │ └── sample-data.json │ └── vendor │ │ ├── angular-ui-router.js │ │ ├── angular.js │ │ └── lodash.js │ ├── package.json │ ├── protractor.conf │ ├── spec │ ├── home │ │ └── home_spec.js │ └── spec_helper.js │ └── templates │ ├── add.html │ ├── home.html │ └── pin.html └── ng-book2-book-angular-8-r74-code.zip /.angulardoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "repoId": "d914f2ff-0b1c-4c7e-8b80-098289770f6b", 3 | "lastSync": 0 4 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ng-book 2 | 3 | ## The Complete Book on Angular 8 4 | 5 | ### by Nate Murray, Felipe Coury, Ari Lerner & Carlos Taborda 6 | 7 | This repository contains the coursework—exercises, mini-projects and projects—from 8 | **_ng-book—The Complete Book on Angular 8._** 9 | 10 | For further information, consult the [wiki](https://github.com/RHieger/ng-book-angular-8/wiki). 11 | -------------------------------------------------------------------------------- /angular-hello-world/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /angular-hello-world/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | navigateTo() { 5 | return browser.get(browser.baseUrl) as Promise; 6 | } 7 | 8 | getTitleText() { 9 | return element(by.css('app-root .content span')).getText() as Promise; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /angular-hello-world/e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types": [ 8 | "jasmine", 9 | "jasminewd2", 10 | "node" 11 | ] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /angular-hello-world/src/app/app.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/angular-hello-world/src/app/app.component.css -------------------------------------------------------------------------------- /angular-hello-world/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |

2 | {{ title }} 3 | 4 | 5 | 6 | 7 | 8 | 9 |

10 | -------------------------------------------------------------------------------- /angular-hello-world/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'] 7 | }) 8 | export class AppComponent { 9 | title = 'angular-hello-world'; 10 | } 11 | -------------------------------------------------------------------------------- /angular-hello-world/src/app/hello-world/hello-world.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/angular-hello-world/src/app/hello-world/hello-world.component.css -------------------------------------------------------------------------------- /angular-hello-world/src/app/hello-world/hello-world.component.html: -------------------------------------------------------------------------------- 1 |

hello-world works!

2 | -------------------------------------------------------------------------------- /angular-hello-world/src/app/hello-world/hello-world.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-hello-world', 5 | templateUrl: './hello-world.component.html', 6 | styleUrls: ['./hello-world.component.css'] 7 | }) 8 | export class HelloWorldComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /angular-hello-world/src/app/user-item/user-item.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/angular-hello-world/src/app/user-item/user-item.component.css -------------------------------------------------------------------------------- /angular-hello-world/src/app/user-item/user-item.component.html: -------------------------------------------------------------------------------- 1 |

2 | Hello {{ name }}! 3 |

4 | -------------------------------------------------------------------------------- /angular-hello-world/src/app/user-list/user-list.component.css: -------------------------------------------------------------------------------- 1 | ul { 2 | list-style-type: none; 3 | } 4 | -------------------------------------------------------------------------------- /angular-hello-world/src/app/user-list/user-list.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | -------------------------------------------------------------------------------- /angular-hello-world/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/angular-hello-world/src/assets/.gitkeep -------------------------------------------------------------------------------- /angular-hello-world/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular-hello-world/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/angular-hello-world/src/favicon.ico -------------------------------------------------------------------------------- /angular-hello-world/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AngularHelloWorld 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /angular-hello-world/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.error(err)); 13 | -------------------------------------------------------------------------------- /angular-hello-world/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /angular-hello-world/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./out-tsc/app", 5 | "types": [] 6 | }, 7 | "files": [ 8 | "src/main.ts", 9 | "src/polyfills.ts" 10 | ], 11 | "include": [ 12 | "src/**/*.ts" 13 | ], 14 | "exclude": [ 15 | "src/test.ts", 16 | "src/**/*.spec.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /angular-hello-world/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "src/test.ts", 12 | "src/polyfills.ts" 13 | ], 14 | "include": [ 15 | "src/**/*.spec.ts", 16 | "src/**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /angular-reddit/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /angular-reddit/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | navigateTo() { 5 | return browser.get(browser.baseUrl) as Promise; 6 | } 7 | 8 | getTitleText() { 9 | return element(by.css('app-root .content span')).getText() as Promise; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /angular-reddit/e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types": [ 8 | "jasmine", 9 | "jasminewd2", 10 | "node" 11 | ] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /angular-reddit/src/app/app.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/angular-reddit/src/app/app.component.css -------------------------------------------------------------------------------- /angular-reddit/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |

Add a Link

6 | 7 |
8 | 9 | 10 |
11 | 12 |
13 | 14 | 15 |
16 | 17 |
18 | -------------------------------------------------------------------------------- /angular-reddit/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'] 7 | }) 8 | export class AppComponent { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /angular-reddit/src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { BrowserModule } from '@angular/platform-browser'; 2 | import { NgModule } from '@angular/core'; 3 | 4 | import { AppComponent } from './app.component'; 5 | 6 | @NgModule({ 7 | declarations: [ 8 | AppComponent 9 | ], 10 | imports: [ 11 | BrowserModule 12 | ], 13 | providers: [], 14 | bootstrap: [AppComponent] 15 | }) 16 | export class AppModule { } 17 | -------------------------------------------------------------------------------- /angular-reddit/src/app/vendor/themes/default/assets/fonts/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/angular-reddit/src/app/vendor/themes/default/assets/fonts/icons.eot -------------------------------------------------------------------------------- /angular-reddit/src/app/vendor/themes/default/assets/fonts/icons.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/angular-reddit/src/app/vendor/themes/default/assets/fonts/icons.otf -------------------------------------------------------------------------------- /angular-reddit/src/app/vendor/themes/default/assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/angular-reddit/src/app/vendor/themes/default/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /angular-reddit/src/app/vendor/themes/default/assets/fonts/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/angular-reddit/src/app/vendor/themes/default/assets/fonts/icons.woff -------------------------------------------------------------------------------- /angular-reddit/src/app/vendor/themes/default/assets/fonts/icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/angular-reddit/src/app/vendor/themes/default/assets/fonts/icons.woff2 -------------------------------------------------------------------------------- /angular-reddit/src/app/vendor/themes/default/assets/images/flags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/angular-reddit/src/app/vendor/themes/default/assets/images/flags.png -------------------------------------------------------------------------------- /angular-reddit/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/angular-reddit/src/assets/.gitkeep -------------------------------------------------------------------------------- /angular-reddit/src/assets/images/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/angular-reddit/src/assets/images/favicon-32x32.png -------------------------------------------------------------------------------- /angular-reddit/src/assets/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/angular-reddit/src/assets/images/favicon.ico -------------------------------------------------------------------------------- /angular-reddit/src/assets/images/ng-book-2-minibook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/angular-reddit/src/assets/images/ng-book-2-minibook.png -------------------------------------------------------------------------------- /angular-reddit/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular-reddit/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/angular-reddit/src/favicon.ico -------------------------------------------------------------------------------- /angular-reddit/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.error(err)); 13 | -------------------------------------------------------------------------------- /angular-reddit/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./out-tsc/app", 5 | "types": [] 6 | }, 7 | "files": [ 8 | "src/main.ts", 9 | "src/polyfills.ts" 10 | ], 11 | "include": [ 12 | "src/**/*.ts" 13 | ], 14 | "exclude": [ 15 | "src/test.ts", 16 | "src/**/*.spec.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /angular-reddit/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "src/test.ts", 12 | "src/polyfills.ts" 13 | ], 14 | "include": [ 15 | "src/**/*.spec.ts", 16 | "src/**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /ng-book-code/.gitignore: -------------------------------------------------------------------------------- 1 | npm-debug.log 2 | package-lock.json 3 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "baseUrl": "./", 6 | "module": "commonjs", 7 | "target": "es5", 8 | "types": [ 9 | "jasmine", 10 | "jasminewd2", 11 | "node" 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/app/change-detection/on-push-demo/default-change-detection.component.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Component, 3 | Input 4 | } from '@angular/core'; 5 | import { Profile } from './profile.model'; 6 | 7 | @Component({ 8 | selector: 'app-default-change-detection', 9 | templateUrl: './default-change-detection.component.html' 10 | }) 11 | export class DefaultChangeDetectionComponent { 12 | @Input() profile: Profile; 13 | } 14 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/app/change-detection/on-push-demo/profile.model.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * User Profile object, stores the first and 3 | * last name as well as a function that gives the time 4 | **/ 5 | export class Profile { 6 | constructor(public first: string, public last: string) {} 7 | 8 | lastChanged() { 9 | return new Date(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/app/content-projection/content-projection-demo/content-projection-demo.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-content-projection-demo', 5 | template: ` 6 |
7 | This is the content of the message 8 |
9 | ` 10 | }) 11 | export class ContentProjectionDemoComponent { 12 | } 13 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/app/host/popup-demo/popup-demo.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-popup-demo', 5 | templateUrl: './popup-demo.component.html' 6 | }) 7 | export class PopupDemoComponent implements OnInit { 8 | 9 | constructor() { } 10 | 11 | ngOnInit() { 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/app/host/popup-demo/profile-card.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-profile-card', 5 | templateUrl: './profile-card.component.html', 6 | styles: [] 7 | }) 8 | export class ProfileCardComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/app/intro/intro.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-intro', 5 | templateUrl: './intro.component.html' 6 | }) 7 | export class IntroComponent implements OnInit { 8 | 9 | constructor() { } 10 | 11 | ngOnInit() { 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/app/lifecycle/all-hooks/all-hooks-demo.component.html: -------------------------------------------------------------------------------- 1 |

2 | AfterContentInit, AfterViewInit, AfterContentChecked and AfterViewChecked 3 |

4 | 5 | 8 | 9 | 12 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/app/lifecycle/all-hooks/all-hooks.component.html: -------------------------------------------------------------------------------- 1 |
2 | Counter: {{ counter }} 3 |
4 | 5 | 8 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/app/lifecycle/differs/comments-list.component.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/app/lifecycle/differs/differs-demo.component.html: -------------------------------------------------------------------------------- 1 |

2 | Comments with DoCheck 3 |

4 | 5 | 6 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/app/lifecycle/differs/differs-demo.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-differs-demo', 5 | templateUrl: './differs-demo.component.html', 6 | styles: [] 7 | }) 8 | export class DiffersDemoComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/app/lifecycle/on-changes/on-changes.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | 5 | 6 |
7 | {{name}} 8 |
9 | {{comment}} 10 |
11 |
12 |
13 |
14 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/app/lifecycle/on-init/on-init-demo.component.html: -------------------------------------------------------------------------------- 1 |

2 | OnInit and OnDestroy 3 |

4 | 5 | 8 | 9 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/app/lifecycle/on-init/on-init-demo.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-on-init-demo', 5 | templateUrl: './on-init-demo.component.html' 6 | }) 7 | export class OnInitDemoComponent { 8 | display: boolean; 9 | 10 | constructor() { 11 | this.display = true; 12 | } 13 | 14 | toggle(): void { 15 | this.display = !this.display; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/app/sidebar/sidebar-item.component.html: -------------------------------------------------------------------------------- 1 | 4 | {{ item.label }} 5 | 6 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/app/sidebar/sidebar.component.html: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/app/styling/external-style/external-style.component.css: -------------------------------------------------------------------------------- 1 | .highlight { 2 | border: 2px dotted red; 3 | text-align: center; 4 | margin-bottom: 20px; 5 | } 6 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/app/tabs/content-tabs-demo/content-tab.component.html: -------------------------------------------------------------------------------- 1 |
3 | 4 | 5 | 6 |
7 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/app/tabs/content-tabs-demo/content-tabset.component.html: -------------------------------------------------------------------------------- 1 | 11 | 12 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/app/templates/ng-book-if/ng-book-if-demo.component.html: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | The message is displayed 7 |
8 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/app/templates/ng-book-if/ng-book-if-demo.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-ng-book-if', 5 | templateUrl: './ng-book-if-demo.component.html', 6 | }) 7 | export class NgBookIfDemoComponent { 8 | display: boolean; 9 | 10 | constructor() { 11 | this.display = true; 12 | } 13 | 14 | toggle() { 15 | this.display = !this.display; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/advanced-components/src/assets/.gitkeep -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/assets/images/avatars/elliot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/advanced-components/src/assets/images/avatars/elliot.jpg -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/assets/images/avatars/helen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/advanced-components/src/assets/images/avatars/helen.jpg -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/assets/images/avatars/jenny.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/advanced-components/src/assets/images/avatars/jenny.jpg -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/assets/images/avatars/joe.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/advanced-components/src/assets/images/avatars/joe.jpg -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/assets/images/avatars/justen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/advanced-components/src/assets/images/avatars/justen.jpg -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/assets/images/avatars/matt.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/advanced-components/src/assets/images/avatars/matt.jpg -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/assets/images/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/advanced-components/src/assets/images/favicon-32x32.png -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/assets/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/advanced-components/src/assets/images/favicon.ico -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/assets/images/ng-book-2-minibook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/advanced-components/src/assets/images/ng-book-2-minibook.png -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/assets/vendor/themes/default/assets/fonts/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/advanced-components/src/assets/vendor/themes/default/assets/fonts/icons.eot -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/assets/vendor/themes/default/assets/fonts/icons.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/advanced-components/src/assets/vendor/themes/default/assets/fonts/icons.otf -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/assets/vendor/themes/default/assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/advanced-components/src/assets/vendor/themes/default/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/assets/vendor/themes/default/assets/fonts/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/advanced-components/src/assets/vendor/themes/default/assets/fonts/icons.woff -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/assets/vendor/themes/default/assets/fonts/icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/advanced-components/src/assets/vendor/themes/default/assets/fonts/icons.woff2 -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/assets/vendor/themes/default/assets/images/flags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/advanced-components/src/assets/vendor/themes/default/assets/images/flags.png -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/advanced-components/src/favicon.ico -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AdvancedComponents 6 | 7 | 8 | 9 | 10 | 11 | 12 | Loading... 13 | 14 | 15 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule); 12 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "baseUrl": "", 6 | "types": [ 7 | "jasmine", 8 | "node" 9 | ] 10 | }, 11 | "files": [ 12 | "test.ts", 13 | "polyfills.ts" 14 | ], 15 | "include": [ 16 | "**/*.spec.ts", 17 | "**/*.d.ts" 18 | ] 19 | } -------------------------------------------------------------------------------- /ng-book-code/advanced-components/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /* SystemJS module definition */ 2 | declare var module: NodeModule; 3 | interface NodeModule { 4 | id: string; 5 | } 6 | -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "baseUrl": "./", 6 | "module": "commonjs", 7 | "target": "es5", 8 | "types": [ 9 | "jasmine", 10 | "jasminewd2", 11 | "node" 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/src/app/intro/intro.component.html: -------------------------------------------------------------------------------- 1 |
2 |

3 | This project shows examples of Angular's built-in directives. 4 | Click on the menu on the right to try out each example! 5 |

6 | 7 |

8 | Many of the examples use console.log so make sure you have your 9 | browser's console open to see the debugging messages. 10 |

11 | 12 |

13 | -- The ng-book team 14 |

15 |
16 | -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/src/app/intro/intro.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-intro', 5 | templateUrl: './intro.component.html' 6 | }) 7 | export class IntroComponent implements OnInit { 8 | 9 | constructor() { } 10 | 11 | ngOnInit() { 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/src/app/ng-non-bindable-example/ng-non-bindable-example.component.html: -------------------------------------------------------------------------------- 1 |
2 | {{ content }} 3 | 4 | ← This is what {{ content }} rendered 5 | 6 |
7 | -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/src/app/sidebar/sidebar-item.component.html: -------------------------------------------------------------------------------- 1 | 4 | {{ item.label }} 5 | 6 | -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/src/app/sidebar/sidebar.component.html: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/built-in-directives/src/assets/.gitkeep -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/src/assets/images/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/built-in-directives/src/assets/images/favicon-32x32.png -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/src/assets/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/built-in-directives/src/assets/images/favicon.ico -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/src/assets/images/ng-book-2-minibook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/built-in-directives/src/assets/images/ng-book-2-minibook.png -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/src/assets/vendor/themes/default/assets/fonts/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/built-in-directives/src/assets/vendor/themes/default/assets/fonts/icons.eot -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/src/assets/vendor/themes/default/assets/fonts/icons.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/built-in-directives/src/assets/vendor/themes/default/assets/fonts/icons.otf -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/src/assets/vendor/themes/default/assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/built-in-directives/src/assets/vendor/themes/default/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/src/assets/vendor/themes/default/assets/fonts/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/built-in-directives/src/assets/vendor/themes/default/assets/fonts/icons.woff -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/src/assets/vendor/themes/default/assets/fonts/icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/built-in-directives/src/assets/vendor/themes/default/assets/fonts/icons.woff2 -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/src/assets/vendor/themes/default/assets/images/flags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/built-in-directives/src/assets/vendor/themes/default/assets/images/flags.png -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/built-in-directives/src/favicon.ico -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ng-book 2: Built-in Directives 6 | 7 | 8 | 9 | 10 | 11 | 12 | Loading... 13 | 14 | 15 | -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule); 12 | -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "baseUrl": "", 6 | "types": [ 7 | "jasmine", 8 | "node" 9 | ] 10 | }, 11 | "files": [ 12 | "test.ts", 13 | "polyfills.ts" 14 | ], 15 | "include": [ 16 | "**/*.spec.ts", 17 | "**/*.d.ts" 18 | ] 19 | } -------------------------------------------------------------------------------- /ng-book-code/built-in-directives/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /* SystemJS module definition */ 2 | declare var module: NodeModule; 3 | interface NodeModule { 4 | id: string; 5 | } 6 | -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "baseUrl": "./", 6 | "module": "commonjs", 7 | "target": "es5", 8 | "types": [ 9 | "jasmine", 10 | "jasminewd2", 11 | "node" 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/app/analytics-demo/analytics-demo.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/dependency-injection/src/app/analytics-demo/analytics-demo.component.css -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/app/analytics-demo/analytics-demo.interface.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Defines a simple Metric 3 | **/ 4 | export interface Metric { 5 | eventName: string; 6 | scope: string; 7 | } 8 | 9 | /** 10 | * Defines what an implementation for recording analytics would be 11 | **/ 12 | export interface AnalyticsImplementation { 13 | recordEvent(metric: Metric): void; 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/app/app.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/dependency-injection/src/app/app.component.css -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/app/intro/intro.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-intro', 5 | templateUrl: './intro.component.html' 6 | }) 7 | export class IntroComponent implements OnInit { 8 | 9 | constructor() { } 10 | 11 | ngOnInit() { 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/app/price-service-demo/price-service-demo.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | 4 | @NgModule({ 5 | imports: [ 6 | CommonModule 7 | ], 8 | declarations: [] 9 | }) 10 | export class PriceServiceDemoModule { } 11 | -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/app/price-service-demo/price-service.interface.ts: -------------------------------------------------------------------------------- 1 | export interface IPriceService { 2 | calculateTotalPrice(basePrice: number, state: string): number; 3 | } 4 | -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/app/price-service-demo/price.service.1.ts: -------------------------------------------------------------------------------- 1 | export class PriceService { 2 | constructor() { } 3 | 4 | calculateTotalPrice(basePrice: number, state: string) { 5 | // e.g. Imgine that in our "real" application we're 6 | // accessing a real database of state sales tax amounts 7 | const tax = Math.random(); 8 | 9 | return basePrice + tax; 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/app/price-service-demo/price.service.mock.ts: -------------------------------------------------------------------------------- 1 | import { IPriceService } from './price-service.interface'; 2 | 3 | export class MockPriceService implements IPriceService { 4 | calculateTotalPrice(basePrice: number, state: string) { 5 | if (state === 'FL') { 6 | return basePrice + 0.66; // it's always 66 cents! 7 | } 8 | 9 | return basePrice; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/app/services/user.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | 3 | @Injectable() 4 | export class UserService { 5 | user: any; 6 | 7 | setUser(newUser) { 8 | this.user = newUser; 9 | } 10 | 11 | getUser(): any { 12 | return this.user; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/app/sidebar/sidebar-item.component.html: -------------------------------------------------------------------------------- 1 | 4 | {{ item.label }} 5 | 6 | -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/app/sidebar/sidebar.component.html: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/app/user-demo/user-demo.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/dependency-injection/src/app/user-demo/user-demo.component.css -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/app/user-demo/user-demo.component.html: -------------------------------------------------------------------------------- 1 |
2 |

5 | Welcome: {{ userName }}! 6 |

7 | 12 |
13 | -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/app/user-demo/user-demo.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | 4 | // imported here 5 | import { UserService } from '../services/user.service'; 6 | 7 | @NgModule({ 8 | imports: [ 9 | CommonModule 10 | ], 11 | providers: [ 12 | UserService // <-- added right here 13 | ], 14 | declarations: [] 15 | }) 16 | export class UserDemoModule { } 17 | -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/dependency-injection/src/assets/.gitkeep -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/assets/images/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/dependency-injection/src/assets/images/favicon-32x32.png -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/assets/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/dependency-injection/src/assets/images/favicon.ico -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/assets/images/ng-book-2-minibook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/dependency-injection/src/assets/images/ng-book-2-minibook.png -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/assets/vendor/themes/default/assets/fonts/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/dependency-injection/src/assets/vendor/themes/default/assets/fonts/icons.eot -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/assets/vendor/themes/default/assets/fonts/icons.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/dependency-injection/src/assets/vendor/themes/default/assets/fonts/icons.otf -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/assets/vendor/themes/default/assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/dependency-injection/src/assets/vendor/themes/default/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/assets/vendor/themes/default/assets/fonts/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/dependency-injection/src/assets/vendor/themes/default/assets/fonts/icons.woff -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/assets/vendor/themes/default/assets/fonts/icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/dependency-injection/src/assets/vendor/themes/default/assets/fonts/icons.woff2 -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/assets/vendor/themes/default/assets/images/flags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/dependency-injection/src/assets/vendor/themes/default/assets/images/flags.png -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/dependency-injection/src/favicon.ico -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DependencyInjection 6 | 7 | 8 | 9 | 10 | 11 | 12 | Loading... 13 | 14 | 15 | -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule); 12 | -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "baseUrl": "", 6 | "types": [ 7 | "jasmine", 8 | "node" 9 | ] 10 | }, 11 | "files": [ 12 | "test.ts", 13 | "polyfills.ts" 14 | ], 15 | "include": [ 16 | "**/*.spec.ts", 17 | "**/*.d.ts" 18 | ] 19 | } -------------------------------------------------------------------------------- /ng-book-code/dependency-injection/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /* SystemJS module definition */ 2 | declare var module: NodeModule; 3 | interface NodeModule { 4 | id: string; 5 | } 6 | -------------------------------------------------------------------------------- /ng-book-code/first-app/.gitignore: -------------------------------------------------------------------------------- 1 | old/ 2 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/browserslist: -------------------------------------------------------------------------------- 1 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | # For IE 9-11 support, please uncomment the last line of the file and adjust as needed 5 | > 0.5% 6 | last 2 versions 7 | Firefox ESR 8 | not dead 9 | # IE 9-11 -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, element, by } from 'protractor'; 2 | 3 | export class AngularHelloWorldPage { 4 | navigateTo() { 5 | return browser.get('/'); 6 | } 7 | 8 | getParagraphText() { 9 | return element(by.css('app-root h1')).getText(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types": [ 8 | "jasmine", 9 | "jasminewd2", 10 | "node" 11 | ] 12 | } 13 | } -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/app/app.component.1.html: -------------------------------------------------------------------------------- 1 |

2 | {{title}} 3 | 4 | 5 |

6 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/app/app.component.2.html: -------------------------------------------------------------------------------- 1 |

2 | {{title}} 3 | 4 | 5 | 6 | 7 |

8 | 9 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/app/app.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/first-app/angular-hello-world/src/app/app.component.css -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |

2 | {{title}} 3 | 4 | 5 | 6 | 7 |

8 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'] 7 | }) 8 | export class AppComponent { 9 | title = 'app'; 10 | } 11 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/app/hello-world/hello-world.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/first-app/angular-hello-world/src/app/hello-world/hello-world.component.css -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/app/hello-world/hello-world.component.html: -------------------------------------------------------------------------------- 1 |

2 | hello-world works! 3 |

4 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/app/hello-world/hello-world.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-hello-world', 5 | templateUrl: './hello-world.component.html', 6 | styleUrls: ['./hello-world.component.css'] 7 | }) 8 | export class HelloWorldComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/app/user-item/user-item.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/first-app/angular-hello-world/src/app/user-item/user-item.component.css -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/app/user-item/user-item.component.html: -------------------------------------------------------------------------------- 1 |

2 | Hello {{ name }} 3 |

4 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/app/user-item/user-item.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async } from '@angular/core/testing'; 4 | import { UserItemComponent } from './user-item.component'; 5 | 6 | describe('Component: UserItem', () => { 7 | it('should create an instance', () => { 8 | let component = new UserItemComponent(); 9 | expect(component).toBeTruthy(); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/app/user-list/user-list.component.1.html: -------------------------------------------------------------------------------- 1 |
    2 |
  • Hello {{ name }}
  • 3 |
4 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/app/user-list/user-list.component.2.html: -------------------------------------------------------------------------------- 1 |
    2 |
  • 3 | 4 |
  • 5 |
6 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/app/user-list/user-list.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/first-app/angular-hello-world/src/app/user-list/user-list.component.css -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/app/user-list/user-list.component.html: -------------------------------------------------------------------------------- 1 |
    2 |
  • 3 | 4 |
  • 5 |
6 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/first-app/angular-hello-world/src/assets/.gitkeep -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/first-app/angular-hello-world/src/favicon.ico -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AngularHelloWorld 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "types": [] 6 | }, 7 | "exclude": [ 8 | "src/test.ts", 9 | "**/*.spec.ts" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "test.ts", 12 | "polyfills.ts" 13 | ], 14 | "include": [ 15 | "**/*.spec.ts", 16 | "**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-hello-world/src/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tslint.json", 3 | "rules": { 4 | "directive-selector": [ 5 | true, 6 | "attribute", 7 | "app", 8 | "camelCase" 9 | ], 10 | "component-selector": [ 11 | true, 12 | "element", 13 | "app", 14 | "kebab-case" 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | end_of_line = lf 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | 12 | [*.md] 13 | max_line_length = 0 14 | trim_trailing_whitespace = false 15 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "baseUrl": "./", 6 | "module": "commonjs", 7 | "target": "es5", 8 | "types": [ 9 | "jasmine", 10 | "jasminewd2", 11 | "node" 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/app/app.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/first-app/angular-reddit/src/app/app.component.css -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/app/article/article.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/first-app/angular-reddit/src/app/article/article.component.css -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/app/article/article.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async } from '@angular/core/testing'; 4 | import { ArticleComponent } from './article.component'; 5 | 6 | describe('Component: Article', () => { 7 | it('should create an instance', () => { 8 | const component = new ArticleComponent(); 9 | expect(component).toBeTruthy(); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/app/index.ts: -------------------------------------------------------------------------------- 1 | export * from './app.component'; 2 | export * from './app.module'; 3 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/app/shared/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/first-app/angular-reddit/src/app/shared/index.ts -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/app/vendor/themes/default/assets/fonts/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/first-app/angular-reddit/src/app/vendor/themes/default/assets/fonts/icons.eot -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/app/vendor/themes/default/assets/fonts/icons.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/first-app/angular-reddit/src/app/vendor/themes/default/assets/fonts/icons.otf -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/app/vendor/themes/default/assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/first-app/angular-reddit/src/app/vendor/themes/default/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/app/vendor/themes/default/assets/fonts/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/first-app/angular-reddit/src/app/vendor/themes/default/assets/fonts/icons.woff -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/app/vendor/themes/default/assets/fonts/icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/first-app/angular-reddit/src/app/vendor/themes/default/assets/fonts/icons.woff2 -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/app/vendor/themes/default/assets/images/flags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/first-app/angular-reddit/src/app/vendor/themes/default/assets/images/flags.png -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/first-app/angular-reddit/src/assets/.gitkeep -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/assets/.npmignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/first-app/angular-reddit/src/assets/.npmignore -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/assets/images/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/first-app/angular-reddit/src/assets/images/favicon-32x32.png -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/assets/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/first-app/angular-reddit/src/assets/images/favicon.ico -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/assets/images/ng-book-2-minibook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/first-app/angular-reddit/src/assets/images/ng-book-2-minibook.png -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/first-app/angular-reddit/src/favicon.ico -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule); 12 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "baseUrl": "", 6 | "types": [] 7 | }, 8 | "exclude": [ 9 | "test.ts", 10 | "**/*.spec.ts" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "baseUrl": "", 6 | "types": [ 7 | "jasmine", 8 | "node" 9 | ] 10 | }, 11 | "files": [ 12 | "test.ts", 13 | "polyfills.ts" 14 | ], 15 | "include": [ 16 | "**/*.spec.ts", 17 | "**/*.d.ts" 18 | ] 19 | } -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /* SystemJS module definition */ 2 | declare var module: NodeModule; 3 | interface NodeModule { 4 | id: string; 5 | } 6 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/steps/src/app/app.component.1.html: -------------------------------------------------------------------------------- 1 |
2 |

Add a Link

3 | 4 |
5 | 6 | 7 |
8 |
9 | 10 | 11 |
12 |
13 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/steps/src/app/app.component.1.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'] 7 | }) 8 | export class AppComponent { 9 | title = 'app works!'; 10 | } 11 | -------------------------------------------------------------------------------- /ng-book-code/first-app/angular-reddit/steps/src/app/article/article.model.1.ts: -------------------------------------------------------------------------------- 1 | export class Article { 2 | title: string; 3 | link: string; 4 | votes: number; 5 | 6 | constructor(title: string, link: string, votes?: number) { 7 | this.title = title; 8 | this.link = link; 9 | this.votes = votes || 0; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /ng-book-code/forms/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /ng-book-code/forms/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "baseUrl": "./", 6 | "module": "commonjs", 7 | "target": "es5", 8 | "types": [ 9 | "jasmine", 10 | "jasminewd2", 11 | "node" 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/forms/src/app/app.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/forms/src/app/app.component.css -------------------------------------------------------------------------------- /ng-book-code/forms/src/app/intro/intro.component.html: -------------------------------------------------------------------------------- 1 |
2 |

3 | This project shows examples of Forms in Angular 4 | Click on the menu on the right to try out each example! 5 |

6 | 7 |

8 | Many of the examples use console.log so make sure you have your 9 | browser's console open to see the debugging messages. 10 |

11 | 12 |

13 | -- The ng-book team 14 |

15 |
16 | -------------------------------------------------------------------------------- /ng-book-code/forms/src/app/intro/intro.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-intro', 5 | templateUrl: './intro.component.html' 6 | }) 7 | export class IntroComponent implements OnInit { 8 | 9 | constructor() { } 10 | 11 | ngOnInit() { 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/forms/src/app/sidebar/sidebar-item.component.html: -------------------------------------------------------------------------------- 1 | 4 | {{ item.label }} 5 | 6 | -------------------------------------------------------------------------------- /ng-book-code/forms/src/app/sidebar/sidebar.component.html: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /ng-book-code/forms/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/forms/src/assets/.gitkeep -------------------------------------------------------------------------------- /ng-book-code/forms/src/assets/images/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/forms/src/assets/images/favicon-32x32.png -------------------------------------------------------------------------------- /ng-book-code/forms/src/assets/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/forms/src/assets/images/favicon.ico -------------------------------------------------------------------------------- /ng-book-code/forms/src/assets/images/ng-book-2-minibook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/forms/src/assets/images/ng-book-2-minibook.png -------------------------------------------------------------------------------- /ng-book-code/forms/src/assets/vendor/themes/default/assets/fonts/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/forms/src/assets/vendor/themes/default/assets/fonts/icons.eot -------------------------------------------------------------------------------- /ng-book-code/forms/src/assets/vendor/themes/default/assets/fonts/icons.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/forms/src/assets/vendor/themes/default/assets/fonts/icons.otf -------------------------------------------------------------------------------- /ng-book-code/forms/src/assets/vendor/themes/default/assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/forms/src/assets/vendor/themes/default/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /ng-book-code/forms/src/assets/vendor/themes/default/assets/fonts/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/forms/src/assets/vendor/themes/default/assets/fonts/icons.woff -------------------------------------------------------------------------------- /ng-book-code/forms/src/assets/vendor/themes/default/assets/fonts/icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/forms/src/assets/vendor/themes/default/assets/fonts/icons.woff2 -------------------------------------------------------------------------------- /ng-book-code/forms/src/assets/vendor/themes/default/assets/images/flags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/forms/src/assets/vendor/themes/default/assets/images/flags.png -------------------------------------------------------------------------------- /ng-book-code/forms/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /ng-book-code/forms/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // The file contents for the current environment will overwrite these during build. 2 | // The build system defaults to the dev environment which uses `environment.ts`, but if you do 3 | // `ng build --env=prod` then `environment.prod.ts` will be used instead. 4 | // The list of which env maps to which file can be found in `.angular-cli.json`. 5 | 6 | export const environment = { 7 | production: false 8 | }; 9 | -------------------------------------------------------------------------------- /ng-book-code/forms/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/forms/src/favicon.ico -------------------------------------------------------------------------------- /ng-book-code/forms/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Forms 6 | 7 | 8 | 9 | 10 | 11 | 12 | Loading... 13 | 14 | 15 | -------------------------------------------------------------------------------- /ng-book-code/forms/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule); 12 | -------------------------------------------------------------------------------- /ng-book-code/forms/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /ng-book-code/forms/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "baseUrl": "", 6 | "types": [ 7 | "jasmine", 8 | "node" 9 | ] 10 | }, 11 | "files": [ 12 | "test.ts", 13 | "polyfills.ts" 14 | ], 15 | "include": [ 16 | "**/*.spec.ts", 17 | "**/*.d.ts" 18 | ] 19 | } -------------------------------------------------------------------------------- /ng-book-code/forms/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /* SystemJS module definition */ 2 | declare var module: NodeModule; 3 | interface NodeModule { 4 | id: string; 5 | } 6 | -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/e2e/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, element, by } from 'protractor'; 2 | 3 | export class InventoryAppPage { 4 | navigateTo() { 5 | return browser.get('/'); 6 | } 7 | 8 | getHeaderText() { 9 | return element(by.css('h1.header')).getText(); 10 | } 11 | 12 | getItemName(i) { 13 | return element.all(by.css('.item .content .header')).get(i).getText(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "baseUrl": "./", 6 | "module": "commonjs", 7 | "target": "es5", 8 | "types": [ 9 | "jasmine", 10 | "jasminewd2", 11 | "node" 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 | 5 | 6 |
7 | -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/app/product-department/product-department.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | {{ name }} 4 | {{i < (product.department.length-1) ? '>' : ''}} 5 | 6 |
7 | -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/app/product.model.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides a `Product` object 3 | */ 4 | export class Product { 5 | constructor( 6 | public sku: string, 7 | public name: string, 8 | public imageUrl: string, 9 | public department: string[], 10 | public price: number) { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/app/products-list/products-list.component.html: -------------------------------------------------------------------------------- 1 |
2 | 7 | 8 |
9 | -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/how-angular-works/inventory-app/src/assets/.gitkeep -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/assets/images/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/how-angular-works/inventory-app/src/assets/images/favicon-32x32.png -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/assets/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/how-angular-works/inventory-app/src/assets/images/favicon.ico -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/assets/images/ng-book-2-minibook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/how-angular-works/inventory-app/src/assets/images/ng-book-2-minibook.png -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/assets/images/products/black-hat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/how-angular-works/inventory-app/src/assets/images/products/black-hat.jpg -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/assets/images/products/black-shoes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/how-angular-works/inventory-app/src/assets/images/products/black-shoes.jpg -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/assets/images/products/blue-jacket.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/how-angular-works/inventory-app/src/assets/images/products/blue-jacket.jpg -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/assets/vendor/themes/default/assets/fonts/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/how-angular-works/inventory-app/src/assets/vendor/themes/default/assets/fonts/icons.eot -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/assets/vendor/themes/default/assets/fonts/icons.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/how-angular-works/inventory-app/src/assets/vendor/themes/default/assets/fonts/icons.otf -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/assets/vendor/themes/default/assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/how-angular-works/inventory-app/src/assets/vendor/themes/default/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/assets/vendor/themes/default/assets/fonts/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/how-angular-works/inventory-app/src/assets/vendor/themes/default/assets/fonts/icons.woff -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/assets/vendor/themes/default/assets/fonts/icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/how-angular-works/inventory-app/src/assets/vendor/themes/default/assets/fonts/icons.woff2 -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/assets/vendor/themes/default/assets/images/flags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/how-angular-works/inventory-app/src/assets/vendor/themes/default/assets/images/flags.png -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/how-angular-works/inventory-app/src/favicon.ico -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule); 12 | -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "baseUrl": "", 6 | "types": [ 7 | "jasmine", 8 | "node" 9 | ] 10 | }, 11 | "files": [ 12 | "test.ts", 13 | "polyfills.ts" 14 | ], 15 | "include": [ 16 | "**/*.spec.ts", 17 | "**/*.d.ts" 18 | ] 19 | } -------------------------------------------------------------------------------- /ng-book-code/how-angular-works/inventory-app/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /* SystemJS module definition */ 2 | declare var module: NodeModule; 3 | interface NodeModule { 4 | id: string; 5 | } 6 | -------------------------------------------------------------------------------- /ng-book-code/http/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /ng-book-code/http/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "baseUrl": "./", 6 | "module": "commonjs", 7 | "target": "es5", 8 | "types": [ 9 | "jasmine", 10 | "jasminewd2", 11 | "node" 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/http/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 |
6 | 7 |
8 | -------------------------------------------------------------------------------- /ng-book-code/http/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | templateUrl: './app.component.html' 6 | }) 7 | export class AppComponent { 8 | } 9 | -------------------------------------------------------------------------------- /ng-book-code/http/src/app/more-http-requests/more-http-requests.component.html: -------------------------------------------------------------------------------- 1 |

More Requests

2 | 3 | 4 | 5 |
loading...
6 |
{{data | json}}
7 | -------------------------------------------------------------------------------- /ng-book-code/http/src/app/simple-http/simple-http.component.html: -------------------------------------------------------------------------------- 1 |

Basic Request

2 | 3 |
loading...
4 |
{{data | json}}
5 | -------------------------------------------------------------------------------- /ng-book-code/http/src/app/you-tube-search/you-tube-search.injectables.ts: -------------------------------------------------------------------------------- 1 | import { 2 | YouTubeSearchService, 3 | YOUTUBE_API_KEY, 4 | YOUTUBE_API_URL 5 | } from './you-tube-search.service'; 6 | 7 | export const youTubeSearchInjectables: Array = [ 8 | {provide: YouTubeSearchService, useClass: YouTubeSearchService}, 9 | {provide: YOUTUBE_API_KEY, useValue: YOUTUBE_API_KEY}, 10 | {provide: YOUTUBE_API_URL, useValue: YOUTUBE_API_URL} 11 | ]; 12 | -------------------------------------------------------------------------------- /ng-book-code/http/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/http/src/assets/.gitkeep -------------------------------------------------------------------------------- /ng-book-code/http/src/assets/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/http/src/assets/images/loading.gif -------------------------------------------------------------------------------- /ng-book-code/http/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /ng-book-code/http/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // The file contents for the current environment will overwrite these during build. 2 | // The build system defaults to the dev environment which uses `environment.ts`, but if you do 3 | // `ng build --env=prod` then `environment.prod.ts` will be used instead. 4 | // The list of which env maps to which file can be found in `.angular-cli.json`. 5 | 6 | export const environment = { 7 | production: false 8 | }; 9 | -------------------------------------------------------------------------------- /ng-book-code/http/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/http/src/favicon.ico -------------------------------------------------------------------------------- /ng-book-code/http/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ng-book 2: Angular HTTP 6 | 7 | 8 | 9 | 10 | 11 | 12 | Loading... 13 | 14 | 15 | -------------------------------------------------------------------------------- /ng-book-code/http/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule); 12 | -------------------------------------------------------------------------------- /ng-book-code/http/src/styles.scss: -------------------------------------------------------------------------------- 1 | /* DO NOT EDIT THIS FILE */ 2 | /* This scss is generated ahead of time so that SASS isn't required to run this 3 | app */ 4 | $icon-font-path: "~bootstrap-sass/assets/fonts/bootstrap/"; 5 | 6 | @import "~bootstrap-sass/assets/stylesheets/_bootstrap"; 7 | -------------------------------------------------------------------------------- /ng-book-code/http/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "baseUrl": "", 6 | "types": [ 7 | "jasmine", 8 | "node" 9 | ] 10 | }, 11 | "files": [ 12 | "test.ts", 13 | "polyfills.ts" 14 | ], 15 | "include": [ 16 | "**/*.spec.ts", 17 | "**/*.d.ts" 18 | ] 19 | } -------------------------------------------------------------------------------- /ng-book-code/http/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /* SystemJS module definition */ 2 | declare var module: NodeModule; 3 | interface NodeModule { 4 | id: string; 5 | } 6 | -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .vscode 3 | hooks 4 | lib 5 | node_modules 6 | platforms 7 | *.js 8 | *.js.map 9 | .DS_Store 10 | ~* -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/.npmignore: -------------------------------------------------------------------------------- 1 | LICENSE.md 2 | *.tgz 3 | -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/Android/drawable-hdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/Android/drawable-hdpi/icon.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/Android/drawable-ldpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/Android/drawable-ldpi/icon.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/Android/drawable-mdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/Android/drawable-mdpi/icon.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/Android/drawable-nodpi/splashscreen.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/Android/drawable-nodpi/splashscreen.9.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-50.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-57.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-72.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-667h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-667h@2x.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-736h@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-736h@3x.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@2x.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@3x.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default@2x.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/App_Resources/iOS/build.xcconfig: -------------------------------------------------------------------------------- 1 | // You can add custom settings here 2 | // for example you can uncomment the following line to force distribution code signing 3 | // CODE_SIGN_IDENTITY = iPhone Distribution 4 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 5 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 6 | -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from "@angular/core"; 2 | 3 | @Component({ 4 | selector: "main", 5 | template: "" 6 | }) 7 | export class AppComponent {} -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/app.css: -------------------------------------------------------------------------------- 1 | @import '~/css/core.light.css'; -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/components/image-component/image.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/config.ts: -------------------------------------------------------------------------------- 1 | export const Config = { 2 | Flickr: { 3 | CLIENT_ID: "b8241dc9b98813054de12ebfc7784321", 4 | API_URL: "https://api.flickr.com/services/rest/?" 5 | }, 6 | MapBox: { 7 | ACCESS_TOKEN: "sk.eyJ1IjoiYnVya2Vob2xsYW5kIiwiYSI6ImNpcXh3NXd3NDAxcDJmbG04M2FxNW5zc3YifQ.kVNHOX6UvgsTPS4BJebtLg" 8 | } 9 | }; -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/main.ts: -------------------------------------------------------------------------------- 1 | import { platformNativeScriptDynamic } from "nativescript-angular/platform"; 2 | import { AppModule } from "./app.module"; 3 | 4 | platformNativeScriptDynamic().bootstrapModule(AppModule); 5 | -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/app/models/getInfoResponse.ts: -------------------------------------------------------------------------------- 1 | interface Owner { 2 | username: string; 3 | realname: string; 4 | } 5 | 6 | export class GetInfoResponse { 7 | owner: Owner; 8 | farm: number; 9 | server: number; 10 | secret: string; 11 | id: number; 12 | url: string; 13 | } -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/references.d.ts: -------------------------------------------------------------------------------- 1 | /// Needed for autocompletion and compilation. -------------------------------------------------------------------------------- /ng-book-code/nativescript/photos-near-me/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es5", 5 | "sourceMap": true, 6 | "experimentalDecorators": true, 7 | "emitDecoratorMetadata": true, 8 | "noEmitHelpers": true, 9 | "noEmitOnError": false 10 | }, 11 | "exclude": [ 12 | "node_modules", 13 | "platforms" 14 | ] 15 | } -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "baseUrl": "./", 6 | "module": "commonjs", 7 | "target": "es5", 8 | "types": [ 9 | "jasmine", 10 | "jasminewd2", 11 | "node" 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/redux-counter/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/redux-counter/src/app/app.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/redux-counter/src/app/app.component.css -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/redux-counter/src/app/app.state.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * minimal counter app state 3 | * 4 | * In this case, our app state is simply a single number (the counter). But we 5 | * put it here because in the future, when our state is more complicated 6 | * 7 | */ 8 | 9 | export interface AppState { 10 | counter: number; 11 | }; 12 | 13 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/redux-counter/src/app/counter.actions.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Action, 3 | ActionCreator 4 | } from 'redux'; 5 | 6 | export const INCREMENT: string = 'INCREMENT'; 7 | export const increment: ActionCreator = () => ({ 8 | type: INCREMENT 9 | }); 10 | 11 | export const DECREMENT: string = 'DECREMENT'; 12 | export const decrement: ActionCreator = () => ({ 13 | type: DECREMENT 14 | }); 15 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/redux-counter/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/redux-counter/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/redux-counter/src/favicon.ico -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/redux-counter/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ReduxCounter 6 | 7 | 8 | 9 | 10 | 11 | 12 | Loading... 13 | 14 | 15 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/redux-counter/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule); 12 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/redux-counter/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/redux-counter/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "baseUrl": "", 6 | "types": [ 7 | "jasmine", 8 | "node" 9 | ] 10 | }, 11 | "files": [ 12 | "test.ts", 13 | "polyfills.ts" 14 | ], 15 | "include": [ 16 | "**/*.spec.ts", 17 | "**/*.d.ts" 18 | ] 19 | } -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/redux-counter/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /* SystemJS module definition */ 2 | declare var module: NodeModule; 3 | interface NodeModule { 4 | id: string; 5 | } 6 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/app/app.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/app/app.component.css -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/app/chat-message/chat-message.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/app/chat-message/chat-message.component.css -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/app/chat-nav-bar/chat-nav-bar.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/app/chat-nav-bar/chat-nav-bar.component.css -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/app/chat-page/chat-page.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/app/chat-page/chat-page.component.css -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/app/chat-page/chat-page.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 | 6 |
7 |
8 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/app/chat-page/chat-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'chat-page', 5 | templateUrl: './chat-page.component.html', 6 | styleUrls: ['./chat-page.component.css'] 7 | }) 8 | export class ChatPageComponent implements OnInit { 9 | constructor() { } 10 | ngOnInit() { } 11 | } 12 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/app/chat-thread/chat-thread.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/app/chat-thread/chat-thread.component.css -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/app/chat-threads/chat-threads.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/app/chat-threads/chat-threads.component.css -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/app/chat-threads/chat-threads.component.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | 9 | 10 |
11 |
12 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/app/chat-window/chat-window.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/app/chat-window/chat-window.component.css -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/app/message/message.model.ts: -------------------------------------------------------------------------------- 1 | import { User } from '../user/user.model'; 2 | import { Thread } from '../thread/thread.model'; 3 | 4 | /** 5 | * Message represents one message being sent in a Thread 6 | */ 7 | export interface Message { 8 | id?: string; 9 | sentAt?: Date; 10 | isRead?: boolean; 11 | thread?: Thread; 12 | author: User; 13 | text: string; 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/app/pipes/from-now.pipe.spec.ts: -------------------------------------------------------------------------------- 1 | import { FromNowPipe } from './from-now.pipe'; 2 | 3 | xdescribe('FromNowPipe', () => { 4 | it('create an instance', () => { 5 | const pipe = new FromNowPipe(); 6 | expect(pipe).toBeTruthy(); 7 | }); 8 | }); 9 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/app/thread/thread.model.ts: -------------------------------------------------------------------------------- 1 | import { Message } from '../message/message.model'; 2 | 3 | /** 4 | * Thread represents a group of Users exchanging Messages 5 | */ 6 | export interface Thread { 7 | id: string; 8 | name: string; 9 | avatarSrc: string; 10 | messages: Message[]; 11 | } 12 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/app/user/user.model.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * A User represents an agent that sends messages 3 | */ 4 | export interface User { 5 | id: string; 6 | name: string; 7 | avatarSrc: string; 8 | isClient?: boolean; 9 | } 10 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/.gitkeep -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/css/styles.scss: -------------------------------------------------------------------------------- 1 | $icon-font-path: "~bootstrap-sass/assets/fonts/bootstrap/"; 2 | 3 | @import "~bootstrap-sass/assets/stylesheets/_bootstrap"; 4 | @import "chat"; 5 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/fonts/bootstrap/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/fonts/bootstrap/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/fonts/bootstrap/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/fonts/bootstrap/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/images/avatars/female-avatar-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/images/avatars/female-avatar-1.png -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/images/avatars/female-avatar-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/images/avatars/female-avatar-2.png -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/images/avatars/female-avatar-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/images/avatars/female-avatar-3.png -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/images/avatars/female-avatar-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/images/avatars/female-avatar-4.png -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/images/avatars/male-avatar-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/images/avatars/male-avatar-1.png -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/images/avatars/male-avatar-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/images/avatars/male-avatar-2.png -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/images/avatars/male-avatar-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/images/avatars/male-avatar-3.png -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/images/avatars/male-avatar-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/images/avatars/male-avatar-4.png -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/images/logos/Angular2ReduxChatHeaderImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/images/logos/Angular2ReduxChatHeaderImage.png -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/images/logos/ng-book-2-minibook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/images/logos/ng-book-2-minibook.png -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/images/readme/full-chat-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/images/readme/full-chat-preview.png -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/images/readme/minimal-redux-ts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/images/readme/minimal-redux-ts.png -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/images/readme/ng-book-2-as-book-cover-pigment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/images/readme/ng-book-2-as-book-cover-pigment.png -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/images/readme/redux-chat-echo-bot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/images/readme/redux-chat-echo-bot.png -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/images/readme/redux-chat-initial-state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/images/readme/redux-chat-initial-state.png -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/images/readme/redux-chat-models.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/images/readme/redux-chat-models.png -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/images/readme/redux-chat-top-level-components.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/images/readme/redux-chat-top-level-components.png -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/assets/images/readme/working-counter-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/assets/images/readme/working-counter-app.png -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/redux/redux-chat/src/favicon.ico -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ng-book 2: AngularReduxChat 6 | 7 | 8 | 9 | 10 | 11 | 12 | Loading... 13 | 14 | 15 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule); 12 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "baseUrl": "", 6 | "types": [ 7 | "jasmine", 8 | "node" 9 | ] 10 | }, 11 | "files": [ 12 | "test.ts", 13 | "polyfills.ts" 14 | ], 15 | "include": [ 16 | "**/*.spec.ts", 17 | "**/*.d.ts" 18 | ] 19 | } -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /* SystemJS module definition */ 2 | declare var module: NodeModule; 3 | interface NodeModule { 4 | id: string; 5 | } 6 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/tutorial/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/tutorial/01-identity-reducer.ts: -------------------------------------------------------------------------------- 1 | interface Action { 2 | type: string; 3 | payload?: any; 4 | } 5 | 6 | interface Reducer { 7 | (state: T, action: Action): T; 8 | } 9 | 10 | let reducer: Reducer = (state: number, action: Action) => { 11 | return state; 12 | }; 13 | 14 | console.log( reducer(0, null) ); // -> 0 15 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/tutorial/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular2-redux-tutorial", 3 | "private": true, 4 | "version": "1.0.0", 5 | "description": "", 6 | "author": "Nate Murray ", 7 | "license": "MIT", 8 | "devDependencies": { 9 | "ts-node": "2.1.0" 10 | }, 11 | "dependencies": { 12 | "redux": "3.5.2" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/redux/redux-chat/tutorial/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES5", 4 | "module": "commonjs", 5 | "removeComments": true, 6 | "emitDecoratorMetadata": true, 7 | "experimentalDecorators": true, 8 | "noEmitHelpers": true, 9 | "sourceMap": true 10 | }, 11 | "compileOnSave": false, 12 | "buildOnSave": false 13 | } 14 | -------------------------------------------------------------------------------- /ng-book-code/routes/music/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /ng-book-code/routes/music/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "baseUrl": "./", 6 | "module": "commonjs", 7 | "target": "es5", 8 | "types": [ 9 | "jasmine", 10 | "jasminewd2", 11 | "node" 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/routes/music/src/app/album/album.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/routes/music/src/app/album/album.component.css -------------------------------------------------------------------------------- /ng-book-code/routes/music/src/app/app.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/routes/music/src/app/app.component.css -------------------------------------------------------------------------------- /ng-book-code/routes/music/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 6 | 7 |
8 |
9 | 10 |
11 |
12 | -------------------------------------------------------------------------------- /ng-book-code/routes/music/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'] 7 | }) 8 | export class AppComponent { 9 | query: string; 10 | } 11 | -------------------------------------------------------------------------------- /ng-book-code/routes/music/src/app/artist/artist.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/routes/music/src/app/artist/artist.component.css -------------------------------------------------------------------------------- /ng-book-code/routes/music/src/app/artist/artist.component.html: -------------------------------------------------------------------------------- 1 |
2 |

{{ artist.name }}

3 | 4 |

5 | 6 |

7 | 8 |

Back

9 |
10 | -------------------------------------------------------------------------------- /ng-book-code/routes/music/src/app/search/search.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/routes/music/src/app/search/search.component.css -------------------------------------------------------------------------------- /ng-book-code/routes/music/src/app/track/track.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/routes/music/src/app/track/track.component.css -------------------------------------------------------------------------------- /ng-book-code/routes/music/src/app/track/track.component.html: -------------------------------------------------------------------------------- 1 |
2 |

{{ track.name }}

3 | 4 |

5 | 6 |

7 | 8 |

9 | 10 |

11 | 12 |

Back

13 |
14 | -------------------------------------------------------------------------------- /ng-book-code/routes/music/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/routes/music/src/assets/.gitkeep -------------------------------------------------------------------------------- /ng-book-code/routes/music/src/assets/vendor/styles.scss: -------------------------------------------------------------------------------- 1 | $icon-font-path: "~bootstrap-sass/assets/fonts/bootstrap/"; 2 | 3 | @import "~bootstrap-sass/assets/stylesheets/_bootstrap"; 4 | @import "sportify"; 5 | -------------------------------------------------------------------------------- /ng-book-code/routes/music/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /ng-book-code/routes/music/src/environments/spotifyApiKey.ts: -------------------------------------------------------------------------------- 1 | export const SpotifyAPIKey = 'BQClRfPs9yvMBML70BgVBajHttXs-nxPxd8ZBV8-wjvOSJnGjyGeZKiTYnbuNhIzadKmiQL28LrB6t5PRuw'; 2 | -------------------------------------------------------------------------------- /ng-book-code/routes/music/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/routes/music/src/favicon.ico -------------------------------------------------------------------------------- /ng-book-code/routes/music/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ng-book 2: Music Router Demo 6 | 7 | 8 | 9 | 10 | 11 | 12 | Loading... 13 | 14 | 15 | -------------------------------------------------------------------------------- /ng-book-code/routes/music/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule); 12 | -------------------------------------------------------------------------------- /ng-book-code/routes/music/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "baseUrl": "", 6 | "types": [ 7 | "jasmine", 8 | "node" 9 | ] 10 | }, 11 | "files": [ 12 | "test.ts", 13 | "polyfills.ts" 14 | ], 15 | "include": [ 16 | "**/*.spec.ts", 17 | "**/*.d.ts" 18 | ] 19 | } -------------------------------------------------------------------------------- /ng-book-code/routes/music/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /* SystemJS module definition */ 2 | declare var module: NodeModule; 3 | interface NodeModule { 4 | id: string; 5 | } 6 | -------------------------------------------------------------------------------- /ng-book-code/routes/routing/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /ng-book-code/routes/routing/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "baseUrl": "./", 6 | "module": "commonjs", 7 | "target": "es5", 8 | "types": [ 9 | "jasmine", 10 | "jasminewd2", 11 | "node" 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/about/about.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/routes/routing/src/app/about/about.component.css -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/about/about.component.html: -------------------------------------------------------------------------------- 1 |

About Us

2 | -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/about/about.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-about', 5 | templateUrl: './about.component.html', 6 | styleUrls: ['./about.component.css'] 7 | }) 8 | export class AboutComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/app.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/routes/routing/src/app/app.component.css -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { 3 | Router 4 | } from '@angular/router'; 5 | 6 | @Component({ 7 | selector: 'app-root', 8 | templateUrl: './app.component.html', 9 | styleUrls: ['./app.component.css'] 10 | }) 11 | export class AppComponent { 12 | constructor(private router: Router) { 13 | }; 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/contact/contact.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/routes/routing/src/app/contact/contact.component.css -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/contact/contact.component.html: -------------------------------------------------------------------------------- 1 |

Contact Us

2 | -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/contact/contact.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-contact', 5 | templateUrl: './contact.component.html', 6 | styleUrls: ['./contact.component.css'] 7 | }) 8 | export class ContactComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/home/home.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/routes/routing/src/app/home/home.component.css -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/home/home.component.html: -------------------------------------------------------------------------------- 1 |

Welcome Home!

2 | -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-home', 5 | templateUrl: './home.component.html', 6 | styleUrls: ['./home.component.css'] 7 | }) 8 | export class HomeComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/login/login.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/routes/routing/src/app/login/login.component.css -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/products/main/main.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/routes/routing/src/app/products/main/main.component.css -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/products/main/main.component.html: -------------------------------------------------------------------------------- 1 |

2 | main works! 3 |

4 | -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/products/main/main.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-main', 5 | templateUrl: './main.component.html', 6 | styleUrls: ['./main.component.css'] 7 | }) 8 | export class MainComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/products/more-info/more-info.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/routes/routing/src/app/products/more-info/more-info.component.css -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/products/more-info/more-info.component.html: -------------------------------------------------------------------------------- 1 |

2 | more-info works! 3 |

4 | -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/products/more-info/more-info.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-more-info', 5 | templateUrl: './more-info.component.html', 6 | styleUrls: ['./more-info.component.css'] 7 | }) 8 | export class MoreInfoComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/products/product/product.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/routes/routing/src/app/products/product/product.component.css -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/products/product/product.component.html: -------------------------------------------------------------------------------- 1 |

2 | You selected product: {{ id }} 3 |

4 | -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/products/products.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/routes/routing/src/app/products/products.component.css -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/products/products.component.html: -------------------------------------------------------------------------------- 1 |

Products

2 | 3 | 9 | 10 |
11 | 12 |
13 | -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/protected/protected.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/routes/routing/src/app/protected/protected.component.css -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/protected/protected.component.html: -------------------------------------------------------------------------------- 1 |

Protected

2 |

3 | Protected content 4 |

5 | -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/app/protected/protected.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-protected', 5 | templateUrl: './protected.component.html', 6 | styleUrls: ['./protected.component.css'] 7 | }) 8 | export class ProtectedComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/routes/routing/src/assets/.gitkeep -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/routes/routing/src/favicon.ico -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Routing 6 | 7 | 8 | 9 | 10 | 11 | 12 | Loading... 13 | 14 | 15 | -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule); 12 | -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "baseUrl": "", 6 | "types": [ 7 | "jasmine", 8 | "node" 9 | ] 10 | }, 11 | "files": [ 12 | "test.ts", 13 | "polyfills.ts" 14 | ], 15 | "include": [ 16 | "**/*.spec.ts", 17 | "**/*.d.ts" 18 | ] 19 | } -------------------------------------------------------------------------------- /ng-book-code/routes/routing/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /* SystemJS module definition */ 2 | declare var module: NodeModule; 3 | interface NodeModule { 4 | id: string; 5 | } 6 | -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "baseUrl": "./", 6 | "module": "commonjs", 7 | "target": "es5", 8 | "types": [ 9 | "jasmine", 10 | "jasminewd2", 11 | "node" 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/app/app.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/app/app.component.css -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/app/chat-message/chat-message.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/app/chat-message/chat-message.component.css -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/app/chat-nav-bar/chat-nav-bar.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/app/chat-nav-bar/chat-nav-bar.component.css -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/app/chat-page/chat-page.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/app/chat-page/chat-page.component.css -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/app/chat-page/chat-page.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 | 6 |
7 |
8 | -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/app/chat-page/chat-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'chat-page', 5 | templateUrl: './chat-page.component.html', 6 | styleUrls: ['./chat-page.component.css'] 7 | }) 8 | export class ChatPageComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/app/chat-thread/chat-thread.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/app/chat-thread/chat-thread.component.css -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/app/chat-threads/chat-threads.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/app/chat-threads/chat-threads.component.css -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/app/chat-threads/chat-threads.component.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | 5 | 8 | 9 | 10 |
11 |
12 | -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/app/chat-window/chat-window.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/app/chat-window/chat-window.component.css -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/app/pipes/from-now.pipe.spec.ts: -------------------------------------------------------------------------------- 1 | import { FromNowPipe } from './from-now.pipe'; 2 | 3 | xdescribe('FromNowPipe', () => { 4 | it('create an instance', () => { 5 | const pipe = new FromNowPipe(); 6 | expect(pipe).toBeTruthy(); 7 | }); 8 | }); 9 | -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/app/user/user.model.ts: -------------------------------------------------------------------------------- 1 | import { uuid } from '../util/uuid'; 2 | 3 | /** 4 | * A User represents an agent that sends messages 5 | */ 6 | export class User { 7 | id: string; 8 | 9 | constructor(public name: string, 10 | public avatarSrc: string) { 11 | this.id = uuid(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/assets/.gitkeep -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/assets/css/styles.scss: -------------------------------------------------------------------------------- 1 | $icon-font-path: "~bootstrap-sass/assets/fonts/bootstrap/"; 2 | 3 | @import "~bootstrap-sass/assets/stylesheets/_bootstrap"; 4 | @import "chat"; 5 | -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/assets/fonts/bootstrap/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/assets/fonts/bootstrap/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/assets/fonts/bootstrap/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/assets/fonts/bootstrap/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/assets/images/avatars/female-avatar-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/assets/images/avatars/female-avatar-1.png -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/assets/images/avatars/female-avatar-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/assets/images/avatars/female-avatar-2.png -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/assets/images/avatars/female-avatar-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/assets/images/avatars/female-avatar-3.png -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/assets/images/avatars/female-avatar-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/assets/images/avatars/female-avatar-4.png -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/assets/images/avatars/male-avatar-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/assets/images/avatars/male-avatar-1.png -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/assets/images/avatars/male-avatar-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/assets/images/avatars/male-avatar-2.png -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/assets/images/avatars/male-avatar-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/assets/images/avatars/male-avatar-3.png -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/assets/images/avatars/male-avatar-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/assets/images/avatars/male-avatar-4.png -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/assets/images/logos/Angular2RxJSChatHeaderImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/assets/images/logos/Angular2RxJSChatHeaderImage.png -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/assets/images/logos/ng-book-2-minibook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/assets/images/logos/ng-book-2-minibook.png -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/assets/images/readme/full-chat-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/assets/images/readme/full-chat-preview.png -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/assets/images/readme/ng-book-2-as-book-cover-pigment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/assets/images/readme/ng-book-2-as-book-cover-pigment.png -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/assets/images/readme/rx-chat-echo-bot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/assets/images/readme/rx-chat-echo-bot.png -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/assets/images/readme/rx-chat-models.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/assets/images/readme/rx-chat-models.png -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/assets/images/readme/rx-chat-top-level-components.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/assets/images/readme/rx-chat-top-level-components.png -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/rxjs/rxjs-chat/src/favicon.ico -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ng-book 2: AngularReduxChat 6 | 7 | 8 | 9 | 10 | 11 | 12 | Loading... 13 | 14 | 15 | -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule); 12 | -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "baseUrl": "", 6 | "types": [ 7 | "jasmine", 8 | "node" 9 | ] 10 | }, 11 | "files": [ 12 | "test.ts", 13 | "polyfills.ts" 14 | ], 15 | "include": [ 16 | "**/*.spec.ts", 17 | "**/*.d.ts" 18 | ] 19 | } -------------------------------------------------------------------------------- /ng-book-code/rxjs/rxjs-chat/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /* SystemJS module definition */ 2 | declare var module: NodeModule; 3 | interface NodeModule { 4 | id: string; 5 | } 6 | -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "baseUrl": "./", 6 | "module": "commonjs", 7 | "target": "es5", 8 | "types": [ 9 | "jasmine", 10 | "jasminewd2", 11 | "node" 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/app/add-pin/add-pin.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/app/add-pin/add-pin.component.css -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/app/analytics.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | 3 | /** 4 | * Analytics Service records metrics about what the user is doing 5 | */ 6 | @Injectable() 7 | export class AnalyticsService { 8 | events: string[] = []; 9 | 10 | public recordEvent(event: string): void { 11 | console.log(`Event: ${event}`); 12 | this.events.push(event); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/app/app.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/app/app.component.css -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |

2 | {{title}} 3 |

4 | -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'] 7 | }) 8 | export class AppComponent { 9 | title = 'app works!'; 10 | } 11 | -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/app/pin-controls/pin-controls.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/app/pin-controls/pin-controls.component.css -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/app/pin-controls/pin-controls.component.html: -------------------------------------------------------------------------------- 1 |
2 | 8 |
9 | -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/.gitkeep -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/avatars/25426965@N08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/avatars/25426965@N08.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/avatars/26265986@N00.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/avatars/26265986@N00.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/avatars/30811353@N04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/avatars/30811353@N04.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/avatars/30815420@N00.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/avatars/30815420@N00.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/avatars/32399948@N06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/avatars/32399948@N06.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/avatars/42826303@N00.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/avatars/42826303@N00.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/avatars/44124348109@N01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/avatars/44124348109@N01.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/avatars/51527254@N02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/avatars/51527254@N02.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/avatars/7562944@N06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/avatars/7562944@N06.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/avatars/7940758@N07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/avatars/7940758@N07.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/avatars/97286492@N00.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/avatars/97286492@N00.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/avatars/me.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/avatars/me.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/icons/Heart-Empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/icons/Heart-Empty.png -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/icons/Heart-Red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/icons/Heart-Red.png -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/pins/106033588_167d811702_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/pins/106033588_167d811702_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/pins/18690623833_5f21f6e248_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/pins/18690623833_5f21f6e248_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/pins/19311217795_b57b6293b3_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/pins/19311217795_b57b6293b3_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/pins/2389719785_2bee9f49b3_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/pins/2389719785_2bee9f49b3_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/pins/2655460065_381b1b25e2_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/pins/2655460065_381b1b25e2_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/pins/2927304508_d28363967c_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/pins/2927304508_d28363967c_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/pins/3714437087_5f1b1a6381_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/pins/3714437087_5f1b1a6381_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/pins/3714916723_938365e9a2_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/pins/3714916723_938365e9a2_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/pins/4422575066_7d5c4c41e7_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/pins/4422575066_7d5c4c41e7_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/pins/4449613634_016c827042_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/pins/4449613634_016c827042_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/pins/6819859061_25d05ef2e1_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/pins/6819859061_25d05ef2e1_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/pins/6854992490_e380a504b9_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/pins/6854992490_e380a504b9_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/pins/6863434196_9a963a1023_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/pins/6863434196_9a963a1023_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/pins/9071808685_58c2c61efc_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/pins/9071808685_58c2c61efc_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/pins/cat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/pins/cat.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/images/pins/cat2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/assets/images/pins/cat2.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/assets/templates/home.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | 5 |
6 |
7 | 8 | -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/hybrid/src/favicon.ico -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/js/app.d.ts: -------------------------------------------------------------------------------- 1 | interface Pin { 2 | title: string; 3 | description: string; 4 | user_name: string; 5 | avatar_src: string; 6 | src: string; 7 | url: string; 8 | faved: boolean; 9 | id: string; 10 | } 11 | 12 | interface PinsService { 13 | pins(): Promise; 14 | addPin(pin: Pin): Promise; 15 | } 16 | -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "baseUrl": "" 6 | }, 7 | "exclude": [ 8 | "test.ts", 9 | "**/*.spec.ts" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "baseUrl": "", 6 | "types": [ 7 | "jasmine", 8 | "node" 9 | ] 10 | }, 11 | "files": [ 12 | "test.ts", 13 | "polyfills.ts" 14 | ], 15 | "include": [ 16 | "**/*.spec.ts", 17 | "**/*.d.ts" 18 | ] 19 | } -------------------------------------------------------------------------------- /ng-book-code/upgrade/hybrid/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /* SystemJS module definition */ 2 | declare var module: NodeModule; 3 | interface NodeModule { 4 | id: string; 5 | } 6 | -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/README.md: -------------------------------------------------------------------------------- 1 | # ng-book 2: ng1 example app 2 | 3 | ## Quick start 4 | 5 | ```bash 6 | # install 7 | npm install 8 | 9 | # run 10 | npm run go 11 | ``` 12 | 13 | Then visit [http://localhost:8080](http://localhost:8080) in your browser. 14 | 15 | ## credits 16 | 17 | * Photo's are CC. For attribution, see the sample-data.json file 18 | * Heart Icon by Thomas Le Bas 19 | -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/avatars/25426965@N08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/avatars/25426965@N08.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/avatars/26265986@N00.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/avatars/26265986@N00.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/avatars/30811353@N04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/avatars/30811353@N04.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/avatars/30815420@N00.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/avatars/30815420@N00.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/avatars/32399948@N06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/avatars/32399948@N06.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/avatars/42826303@N00.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/avatars/42826303@N00.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/avatars/44124348109@N01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/avatars/44124348109@N01.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/avatars/51527254@N02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/avatars/51527254@N02.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/avatars/7562944@N06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/avatars/7562944@N06.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/avatars/7940758@N07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/avatars/7940758@N07.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/avatars/97286492@N00.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/avatars/97286492@N00.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/avatars/me.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/avatars/me.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/icons/Heart-Empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/icons/Heart-Empty.png -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/icons/Heart-Red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/icons/Heart-Red.png -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/pins/106033588_167d811702_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/pins/106033588_167d811702_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/pins/18690623833_5f21f6e248_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/pins/18690623833_5f21f6e248_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/pins/19311217795_b57b6293b3_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/pins/19311217795_b57b6293b3_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/pins/2389719785_2bee9f49b3_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/pins/2389719785_2bee9f49b3_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/pins/2655460065_381b1b25e2_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/pins/2655460065_381b1b25e2_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/pins/2927304508_d28363967c_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/pins/2927304508_d28363967c_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/pins/3714437087_5f1b1a6381_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/pins/3714437087_5f1b1a6381_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/pins/3714916723_938365e9a2_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/pins/3714916723_938365e9a2_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/pins/4422575066_7d5c4c41e7_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/pins/4422575066_7d5c4c41e7_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/pins/4449613634_016c827042_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/pins/4449613634_016c827042_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/pins/6819859061_25d05ef2e1_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/pins/6819859061_25d05ef2e1_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/pins/6854992490_e380a504b9_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/pins/6854992490_e380a504b9_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/pins/6863434196_9a963a1023_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/pins/6863434196_9a963a1023_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/pins/9071808685_58c2c61efc_o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/pins/9071808685_58c2c61efc_o.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/pins/cat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/pins/cat.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/images/pins/cat2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book-code/upgrade/ng1/images/pins/cat2.jpg -------------------------------------------------------------------------------- /ng-book-code/upgrade/ng1/templates/home.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | 5 |
6 |
7 | 8 | -------------------------------------------------------------------------------- /ng-book2-book-angular-8-r74-code.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RHieger/ng-book-angular-8/b513731ce6fba5eeee4050016e30b7f252b23bf3/ng-book2-book-angular-8-r74-code.zip --------------------------------------------------------------------------------