├── .gitignore ├── LICENSE ├── README.md ├── angular 6 └── Demos │ ├── 01 structure solution by features │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ └── core.module.ts │ │ │ ├── games │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ └── user.module.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 02 main routing module │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ └── core.module.ts │ │ │ ├── games │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ └── user.module.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 03 eager module │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ └── core.module.ts │ │ │ ├── games │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 04 lazy module │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ └── core.module.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 05 registering core services │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 06 notifying user changes │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 07 viewchild and viewchildren │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 08 child components │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 09 refactor │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 10 managing state property bag │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 11 state management service │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 12 refactor │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 13 communicate concurrent compenents │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 14 communication with subjects │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 15 refactor video-game-console module │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic-validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ │ └── video-consoles │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 16 ngrx basic setup │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic-validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 17 ngrx dispatching an action │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic-validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── state │ │ │ │ │ └── user.reducer.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 18 redux dev tools │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic-validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── state │ │ │ │ │ └── user.reducer.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 19 state enhancement │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic-validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── state │ │ │ │ └── app.state.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── state │ │ │ │ │ └── user.reducer.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 20 building selectors │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic-validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── state │ │ │ │ └── app.state.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── state │ │ │ │ │ └── user.reducer.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 21 building action creators │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic-validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── state │ │ │ │ └── app.state.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── state │ │ │ │ │ └── user.reducer.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ ├── video-consoles.actions.ts │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 22 using an effect │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic-validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── state │ │ │ │ └── app.state.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── state │ │ │ │ │ └── user.reducer.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ ├── video-consoles.actions.ts │ │ │ │ ├── video-consoles.effects.ts │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 23 unsubscribing observables │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic-validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── state │ │ │ │ └── app.state.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── state │ │ │ │ │ └── user.reducer.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ ├── video-consoles.actions.ts │ │ │ │ ├── video-consoles.effects.ts │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 24 exception handling in effects │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic-validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── state │ │ │ │ └── app.state.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── state │ │ │ │ │ └── user.reducer.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ ├── video-consoles.actions.ts │ │ │ │ ├── video-consoles.effects.ts │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 25 update video console │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic-validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── state │ │ │ │ └── app.state.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── state │ │ │ │ │ └── user.reducer.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ ├── video-consoles.actions.ts │ │ │ │ ├── video-consoles.effects.ts │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 26 container components │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic-validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── state │ │ │ │ └── app.state.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── state │ │ │ │ │ └── user.reducer.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ ├── video-consoles.actions.ts │ │ │ │ ├── video-consoles.effects.ts │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 27 presentational components │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic-validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── state │ │ │ │ └── app.state.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── state │ │ │ │ │ └── user.reducer.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ ├── video-consoles.actions.ts │ │ │ │ ├── video-consoles.effects.ts │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 28 on push detection │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic-validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── state │ │ │ │ └── app.state.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── state │ │ │ │ │ └── user.reducer.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ ├── video-consoles.actions.ts │ │ │ │ ├── video-consoles.effects.ts │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 29 creating a barrel │ └── game-catalog │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.css │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic-validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── state │ │ │ │ └── app.state.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── state │ │ │ │ │ └── user.reducer.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ ├── index.ts │ │ │ │ ├── video-consoles.actions.ts │ │ │ │ ├── video-consoles.effects.ts │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── 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 │ ├── 30 real time application │ ├── chat-client │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ │ ├── protractor.conf.js │ │ │ ├── src │ │ │ │ ├── app.e2e-spec.ts │ │ │ │ └── app.po.ts │ │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── message.model.ts │ │ │ │ ├── sender.service.ts │ │ │ │ └── socket.service.ts │ │ │ ├── assets │ │ │ │ └── .gitkeep │ │ │ ├── browserslist │ │ │ ├── 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 │ └── server │ │ ├── package.json │ │ └── src │ │ ├── app.js │ │ ├── models │ │ ├── Message.js │ │ ├── User.js │ │ ├── message-repository.js │ │ ├── messages-events.js │ │ └── user-repository.js │ │ ├── namespaces │ │ ├── chat.js │ │ └── index.js │ │ └── routes │ │ ├── messages.js │ │ └── users.js │ ├── 31 angular universal │ └── universalApp │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── server.ts │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ └── app.server.module.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── karma.conf.js │ │ ├── main.server.ts │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.css │ │ ├── test.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.server.json │ │ ├── tsconfig.spec.json │ │ └── tslint.json │ │ ├── tsconfig.json │ │ ├── tslint.json │ │ └── webpack.server.config.js │ ├── 32 angular i18n │ └── i18nExample │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ └── templates │ │ │ │ ├── templates.component.css │ │ │ │ ├── templates.component.html │ │ │ │ ├── templates.component.spec.ts │ │ │ │ └── templates.component.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── karma.conf.js │ │ ├── locale │ │ │ ├── messages.en.xlf │ │ │ ├── messages.es.xlf │ │ │ └── messages.xlf │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.css │ │ ├── test.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ └── tslint.json │ │ ├── tsconfig.json │ │ └── tslint.json │ └── 33 angular i18n server │ └── i18nExample │ ├── .editorconfig │ ├── .gitignore │ ├── README.md │ ├── angular.json │ ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.e2e.json │ ├── package.json │ ├── server.ts │ ├── src │ ├── app │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── app.server.module.ts │ │ └── templates │ │ │ ├── templates.component.css │ │ │ ├── templates.component.html │ │ │ ├── templates.component.spec.ts │ │ │ └── templates.component.ts │ ├── assets │ │ └── .gitkeep │ ├── browserslist │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── karma.conf.js │ ├── locale │ │ ├── messages.en.xlf │ │ ├── messages.es.xlf │ │ └── messages.xlf │ ├── main.server.ts │ ├── main.ts │ ├── polyfills.ts │ ├── styles.css │ ├── test.ts │ ├── tsconfig.app.json │ ├── tsconfig.server.json │ ├── tsconfig.spec.json │ └── tslint.json │ ├── tsconfig.json │ ├── tslint.json │ └── webpack.server.config.js ├── angular 8 └── Demos │ ├── 01 structure solution by features │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ └── core.module.ts │ │ │ ├── games │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ └── user.module.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 │ ├── 02 main routing module │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ └── core.module.ts │ │ │ ├── games │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ └── user.module.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 │ ├── 03 eager module │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ └── core.module.ts │ │ │ ├── games │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 04 lazy module │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ └── core.module.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 05 registering core services │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 06 notifying user changes │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 07 viewchild and viewchildren │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 08 child components │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 09 refactor │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 10 managing state property bag │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 11 state management service │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 12 refactor │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 13 communicate concurrent components │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 14 communication with subjects │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 15 refactor video-game-console module │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic.validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.ts │ │ │ └── video-consoles │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.css │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.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 │ ├── 16 ngrx basic setup │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic.validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.css │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.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 │ ├── 17 ngrx dispatching an action │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic.validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.css │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.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 │ ├── 18 redux dev tools │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic.validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.css │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.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 │ ├── 19 state enhancement │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic.validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── state │ │ │ │ └── app.state.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.css │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.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 │ ├── 20 building selectors │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic.validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── state │ │ │ │ └── app.state.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.css │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.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 │ ├── 21 building action creators │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic.validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── state │ │ │ │ └── app.state.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ ├── video-consoles.actions.ts │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.css │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.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 │ ├── 22 using an effect │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic.validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── state │ │ │ │ └── app.state.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ ├── video-consoles.actions.ts │ │ │ │ ├── video-consoles.effects.ts │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.css │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.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 │ ├── 23 unsubscribing observables │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic.validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── state │ │ │ │ └── app.state.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ ├── video-consoles.actions.ts │ │ │ │ ├── video-consoles.effects.ts │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.css │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.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 │ ├── 24 exception handling in effects │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic.validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── state │ │ │ │ └── app.state.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ ├── video-consoles.actions.ts │ │ │ │ ├── video-consoles.effects.ts │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.css │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.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 │ ├── 25 update video console │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic.validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── state │ │ │ │ └── app.state.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.ts │ │ │ └── video-consoles │ │ │ │ ├── state │ │ │ │ ├── video-consoles.actions.ts │ │ │ │ ├── video-consoles.effects.ts │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-board │ │ │ │ ├── video-console-board.component.css │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.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 │ ├── 26 container components │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic.validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── state │ │ │ │ └── app.state.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.ts │ │ │ └── video-consoles │ │ │ │ ├── components │ │ │ │ └── video-console-list │ │ │ │ │ ├── video-console-list.component.css │ │ │ │ │ ├── video-console-list.component.html │ │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── containers │ │ │ │ └── video-console-board │ │ │ │ │ ├── video-console-board.component.css │ │ │ │ │ ├── video-console-board.component.html │ │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── state │ │ │ │ ├── video-consoles.actions.ts │ │ │ │ ├── video-consoles.effects.ts │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.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 │ ├── 27 presentational components │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic.validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── state │ │ │ │ └── app.state.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.ts │ │ │ └── video-consoles │ │ │ │ ├── components │ │ │ │ └── video-console-list │ │ │ │ │ ├── video-console-list.component.css │ │ │ │ │ ├── video-console-list.component.html │ │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── containers │ │ │ │ └── video-console-board │ │ │ │ │ ├── video-console-board.component.css │ │ │ │ │ ├── video-console-board.component.html │ │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── state │ │ │ │ ├── video-consoles.actions.ts │ │ │ │ ├── video-consoles.effects.ts │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.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 │ ├── 28 on push detection │ └── game-catalog │ │ ├── .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.json │ │ ├── src │ │ ├── app │ │ │ ├── app-data.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ ├── generic.validator.ts │ │ │ │ ├── number.validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── state │ │ │ │ └── app.state.ts │ │ │ ├── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.ts │ │ │ └── video-consoles │ │ │ │ ├── components │ │ │ │ └── video-console-list │ │ │ │ │ ├── video-console-list.component.css │ │ │ │ │ ├── video-console-list.component.html │ │ │ │ │ └── video-console-list.component.ts │ │ │ │ ├── containers │ │ │ │ └── video-console-board │ │ │ │ │ ├── video-console-board.component.css │ │ │ │ │ ├── video-console-board.component.html │ │ │ │ │ └── video-console-board.component.ts │ │ │ │ ├── state │ │ │ │ ├── video-consoles.actions.ts │ │ │ │ ├── video-consoles.effects.ts │ │ │ │ └── video-consoles.reducer.ts │ │ │ │ ├── video-console-edit │ │ │ │ ├── video-console-edit.component.css │ │ │ │ ├── video-console-edit.component.html │ │ │ │ └── video-console-edit.component.ts │ │ │ │ ├── video-console.model.ts │ │ │ │ ├── video-console.service.ts │ │ │ │ └── video-consoles.module.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 │ └── 29 creating a barrel │ └── game-catalog │ ├── .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.json │ ├── src │ ├── app │ │ ├── app-data.ts │ │ ├── app-routing.module.ts │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── core │ │ │ ├── core.module.ts │ │ │ ├── http-data-logger.service.ts │ │ │ └── http-error-handler.service.ts │ │ ├── games │ │ │ ├── game-details │ │ │ │ ├── game-details.component.css │ │ │ │ ├── game-details.component.html │ │ │ │ └── game-details.component.ts │ │ │ ├── game-edit │ │ │ │ ├── game-edit.component.css │ │ │ │ ├── game-edit.component.html │ │ │ │ └── game-edit.component.ts │ │ │ ├── game-list │ │ │ │ ├── game-list.component.css │ │ │ │ ├── game-list.component.html │ │ │ │ └── game-list.component.ts │ │ │ ├── game-parameter.service.ts │ │ │ ├── game-summary │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ ├── game-summary-list.component.html │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ ├── game-summary.component.html │ │ │ │ └── game-summary.component.ts │ │ │ ├── game.model.ts │ │ │ ├── game.service.ts │ │ │ └── games.module.ts │ │ ├── home │ │ │ ├── menu.component.html │ │ │ ├── menu.component.ts │ │ │ ├── page-not-found.component.ts │ │ │ ├── shell.component.html │ │ │ ├── shell.component.ts │ │ │ ├── welcome.component.html │ │ │ └── welcome.component.ts │ │ ├── shared │ │ │ ├── criteria │ │ │ │ ├── criteria.component.css │ │ │ │ ├── criteria.component.html │ │ │ │ └── criteria.component.ts │ │ │ ├── generic.validator.ts │ │ │ ├── number.validator.ts │ │ │ └── shared.module.ts │ │ ├── state │ │ │ └── app.state.ts │ │ ├── user │ │ │ ├── auth-guard.service.ts │ │ │ ├── auth.service.ts │ │ │ ├── login.component.css │ │ │ ├── login.component.html │ │ │ ├── login.component.ts │ │ │ ├── user.model.ts │ │ │ └── user.module.ts │ │ └── video-consoles │ │ │ ├── components │ │ │ └── video-console-list │ │ │ │ ├── video-console-list.component.css │ │ │ │ ├── video-console-list.component.html │ │ │ │ └── video-console-list.component.ts │ │ │ ├── containers │ │ │ └── video-console-board │ │ │ │ ├── video-console-board.component.css │ │ │ │ ├── video-console-board.component.html │ │ │ │ └── video-console-board.component.ts │ │ │ ├── state │ │ │ ├── index.ts │ │ │ ├── video-consoles.actions.ts │ │ │ ├── video-consoles.effects.ts │ │ │ └── video-consoles.reducer.ts │ │ │ ├── video-console-edit │ │ │ ├── video-console-edit.component.css │ │ │ ├── video-console-edit.component.html │ │ │ └── video-console-edit.component.ts │ │ │ ├── video-console.model.ts │ │ │ ├── video-console.service.ts │ │ │ └── video-consoles.module.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_11 └── demos │ ├── 01-structure-solution-by-feature │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ └── core.module.ts │ │ │ ├── games │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ └── user.module.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 │ ├── 02-main-routing-module │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ └── core.module.ts │ │ │ ├── games │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ └── user.module.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 │ ├── 03-eager-module │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ └── core.module.ts │ │ │ ├── games │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 04-lazy-module │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ └── core.module.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 05-registering-core-services │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 06-notifying-user-changes │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 07-viewchild-and-viewchildren │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 08-child-components │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 09-refactor │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 10-managing-state-property-bag │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 11-state-management-service │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 12-refactor │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 13-communicate-concurrent-components │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ └── 14-communication-with-subjects │ └── game-catalog │ ├── .browserslistrc │ ├── .editorconfig │ ├── README.md │ ├── angular.json │ ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.json │ ├── karma.conf.js │ ├── package.json │ ├── src │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── core │ │ │ ├── core.module.ts │ │ │ ├── http-data-logger.service.ts │ │ │ └── http-error-handler.service.ts │ │ ├── games │ │ │ ├── game-data.ts │ │ │ ├── game-details │ │ │ │ ├── game-details.component.css │ │ │ │ ├── game-details.component.html │ │ │ │ └── game-details.component.ts │ │ │ ├── game-edit │ │ │ │ ├── game-edit.component.css │ │ │ │ ├── game-edit.component.html │ │ │ │ └── game-edit.component.ts │ │ │ ├── game-list │ │ │ │ ├── game-list.component.css │ │ │ │ ├── game-list.component.html │ │ │ │ └── game-list.component.ts │ │ │ ├── game-parameter.service.ts │ │ │ ├── game-summary │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ ├── game-summary-list.component.html │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ ├── game-summary.component.html │ │ │ │ └── game-summary.component.ts │ │ │ ├── game.model.ts │ │ │ ├── game.service.ts │ │ │ └── games.module.ts │ │ ├── home │ │ │ ├── menu.component.html │ │ │ ├── menu.component.ts │ │ │ ├── page-not-found.component.ts │ │ │ ├── shell.component.html │ │ │ ├── shell.component.ts │ │ │ ├── welcome.component.html │ │ │ └── welcome.component.ts │ │ ├── shared │ │ │ ├── criteria │ │ │ │ ├── criteria.component.css │ │ │ │ ├── criteria.component.html │ │ │ │ └── criteria.component.ts │ │ │ └── shared.module.ts │ │ └── user │ │ │ ├── auth-guard.service.ts │ │ │ ├── auth.service.ts │ │ │ ├── login.component.css │ │ │ ├── login.component.html │ │ │ ├── login.component.ts │ │ │ ├── user.model.ts │ │ │ └── user.module.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_12 └── demos │ ├── 01-structure-solution-by-feature │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ └── core.module.ts │ │ │ ├── games │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ └── user.module.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 │ ├── 02-main-routing-module │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ └── core.module.ts │ │ │ ├── games │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ └── user.module.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 │ ├── 03-eager-module │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ └── core.module.ts │ │ │ ├── games │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 04-lazy-module │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ └── core.module.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 05-registering-core-services │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 06-notifying-user-changes │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 07-viewchild-and-viewchildren │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 08-child-components │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 09-refactor │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 10-managing-state-property-bag │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ └── http-data-logger.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 11-state-management-service │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 12-refactor │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ ├── 13-communicate-concurrent-components │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 │ └── 14-communication-with-subjects │ └── game-catalog │ ├── .browserslistrc │ ├── .editorconfig │ ├── README.md │ ├── angular.json │ ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.json │ ├── karma.conf.js │ ├── package.json │ ├── src │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── core │ │ │ ├── core.module.ts │ │ │ ├── http-data-logger.service.ts │ │ │ └── http-error-handler.service.ts │ │ ├── games │ │ │ ├── game-data.ts │ │ │ ├── game-details │ │ │ │ ├── game-details.component.css │ │ │ │ ├── game-details.component.html │ │ │ │ └── game-details.component.ts │ │ │ ├── game-edit │ │ │ │ ├── game-edit.component.css │ │ │ │ ├── game-edit.component.html │ │ │ │ └── game-edit.component.ts │ │ │ ├── game-list │ │ │ │ ├── game-list.component.css │ │ │ │ ├── game-list.component.html │ │ │ │ └── game-list.component.ts │ │ │ ├── game-parameter.service.ts │ │ │ ├── game-summary │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ ├── game-summary-list.component.html │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ ├── game-summary.component.html │ │ │ │ └── game-summary.component.ts │ │ │ ├── game.model.ts │ │ │ ├── game.service.ts │ │ │ └── games.module.ts │ │ ├── home │ │ │ ├── menu.component.html │ │ │ ├── menu.component.ts │ │ │ ├── page-not-found.component.ts │ │ │ ├── shell.component.html │ │ │ ├── shell.component.ts │ │ │ ├── welcome.component.html │ │ │ └── welcome.component.ts │ │ ├── shared │ │ │ ├── criteria │ │ │ │ ├── criteria.component.css │ │ │ │ ├── criteria.component.html │ │ │ │ └── criteria.component.ts │ │ │ └── shared.module.ts │ │ └── user │ │ │ ├── auth-guard.service.ts │ │ │ ├── auth.service.ts │ │ │ ├── login.component.css │ │ │ ├── login.component.html │ │ │ ├── login.component.ts │ │ │ ├── user.model.ts │ │ │ └── user.module.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_13 ├── .devcontainer │ └── devcontainer.json ├── demos │ ├── 01-structure-solution-by-feature │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ └── core.module.ts │ │ │ │ ├── games │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ └── user.module.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 │ ├── 02-main-routing-module │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ └── core.module.ts │ │ │ │ ├── games │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ └── user.module.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 │ ├── 03-eager-module │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ └── core.module.ts │ │ │ │ ├── games │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ ├── auth-guard.service.ts │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.ts │ │ │ │ │ ├── user.model.ts │ │ │ │ │ └── user.module.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 │ ├── 04-lazy-module │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ └── core.module.ts │ │ │ │ ├── games │ │ │ │ │ ├── game-data.ts │ │ │ │ │ ├── game-list │ │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ │ └── game-list.component.ts │ │ │ │ │ ├── game.model.ts │ │ │ │ │ ├── game.service.ts │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ ├── auth-guard.service.ts │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.ts │ │ │ │ │ ├── user.model.ts │ │ │ │ │ └── user.module.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 │ ├── 05-registering-core-services │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ ├── core.module.ts │ │ │ │ │ └── http-data-logger.service.ts │ │ │ │ ├── games │ │ │ │ │ ├── game-data.ts │ │ │ │ │ ├── game-list │ │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ │ └── game-list.component.ts │ │ │ │ │ ├── game.model.ts │ │ │ │ │ ├── game.service.ts │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ ├── auth-guard.service.ts │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.ts │ │ │ │ │ ├── user.model.ts │ │ │ │ │ └── user.module.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 │ ├── 06-notifying-user-changes │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ ├── core.module.ts │ │ │ │ │ └── http-data-logger.service.ts │ │ │ │ ├── games │ │ │ │ │ ├── game-data.ts │ │ │ │ │ ├── game-list │ │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ │ └── game-list.component.ts │ │ │ │ │ ├── game.model.ts │ │ │ │ │ ├── game.service.ts │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ ├── auth-guard.service.ts │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.ts │ │ │ │ │ ├── user.model.ts │ │ │ │ │ └── user.module.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 │ ├── 07-viewchild-and-viewchildren │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ ├── core.module.ts │ │ │ │ │ └── http-data-logger.service.ts │ │ │ │ ├── games │ │ │ │ │ ├── game-data.ts │ │ │ │ │ ├── game-list │ │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ │ └── game-list.component.ts │ │ │ │ │ ├── game.model.ts │ │ │ │ │ ├── game.service.ts │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ ├── auth-guard.service.ts │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.ts │ │ │ │ │ ├── user.model.ts │ │ │ │ │ └── user.module.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 │ ├── 08-child-components │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ ├── core.module.ts │ │ │ │ │ └── http-data-logger.service.ts │ │ │ │ ├── games │ │ │ │ │ ├── game-data.ts │ │ │ │ │ ├── game-list │ │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ │ └── game-list.component.ts │ │ │ │ │ ├── game.model.ts │ │ │ │ │ ├── game.service.ts │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ ├── criteria │ │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ │ └── criteria.component.ts │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ ├── auth-guard.service.ts │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.ts │ │ │ │ │ ├── user.model.ts │ │ │ │ │ └── user.module.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 │ ├── 09-refactor │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ ├── core.module.ts │ │ │ │ │ └── http-data-logger.service.ts │ │ │ │ ├── games │ │ │ │ │ ├── game-data.ts │ │ │ │ │ ├── game-details │ │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ │ └── game-details.component.ts │ │ │ │ │ ├── game-edit │ │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ │ └── game-edit.component.ts │ │ │ │ │ ├── game-list │ │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ │ └── game-list.component.ts │ │ │ │ │ ├── game.model.ts │ │ │ │ │ ├── game.service.ts │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ ├── criteria │ │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ │ └── criteria.component.ts │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ ├── auth-guard.service.ts │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.ts │ │ │ │ │ ├── user.model.ts │ │ │ │ │ └── user.module.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 │ ├── 10-managing-state-property-bag │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ ├── core.module.ts │ │ │ │ │ └── http-data-logger.service.ts │ │ │ │ ├── games │ │ │ │ │ ├── game-data.ts │ │ │ │ │ ├── game-details │ │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ │ └── game-details.component.ts │ │ │ │ │ ├── game-edit │ │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ │ └── game-edit.component.ts │ │ │ │ │ ├── game-list │ │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ │ └── game-list.component.ts │ │ │ │ │ ├── game-parameter.service.ts │ │ │ │ │ ├── game.model.ts │ │ │ │ │ ├── game.service.ts │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ ├── criteria │ │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ │ └── criteria.component.ts │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ ├── auth-guard.service.ts │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.ts │ │ │ │ │ ├── user.model.ts │ │ │ │ │ └── user.module.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 │ ├── 11-state-management-service │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ ├── core.module.ts │ │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ │ └── http-error-handler.service.ts │ │ │ │ ├── games │ │ │ │ │ ├── game-data.ts │ │ │ │ │ ├── game-details │ │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ │ └── game-details.component.ts │ │ │ │ │ ├── game-edit │ │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ │ └── game-edit.component.ts │ │ │ │ │ ├── game-list │ │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ │ └── game-list.component.ts │ │ │ │ │ ├── game-parameter.service.ts │ │ │ │ │ ├── game.model.ts │ │ │ │ │ ├── game.service.ts │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ ├── criteria │ │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ │ └── criteria.component.ts │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ ├── auth-guard.service.ts │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.ts │ │ │ │ │ ├── user.model.ts │ │ │ │ │ └── user.module.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 │ ├── 12-refactor │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ ├── core.module.ts │ │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ │ └── http-error-handler.service.ts │ │ │ │ ├── games │ │ │ │ │ ├── game-data.ts │ │ │ │ │ ├── game-details │ │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ │ └── game-details.component.ts │ │ │ │ │ ├── game-edit │ │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ │ └── game-edit.component.ts │ │ │ │ │ ├── game-list │ │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ │ └── game-list.component.ts │ │ │ │ │ ├── game-parameter.service.ts │ │ │ │ │ ├── game-summary │ │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ │ └── game-summary.component.ts │ │ │ │ │ ├── game.model.ts │ │ │ │ │ ├── game.service.ts │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ ├── criteria │ │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ │ └── criteria.component.ts │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ ├── auth-guard.service.ts │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.ts │ │ │ │ │ ├── user.model.ts │ │ │ │ │ └── user.module.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 │ └── 13-communicate-concurrent-components │ │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── .vscode │ │ ├── extensions.json │ │ ├── launch.json │ │ └── tasks.json │ │ ├── README.md │ │ ├── angular.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 └── package.json ├── angular_14 ├── demos │ ├── 01-structure-solution-by-feature │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ └── core.module.ts │ │ │ │ ├── games │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ └── user.module.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 │ ├── 02-main-routing-module │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ └── core.module.ts │ │ │ │ ├── games │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ └── user.module.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 │ ├── 03-eager-module │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ └── core.module.ts │ │ │ │ ├── games │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ ├── auth-guard.service.ts │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.ts │ │ │ │ │ ├── user.model.ts │ │ │ │ │ └── user.module.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 │ ├── 04-lazy-module │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ └── core.module.ts │ │ │ │ ├── games │ │ │ │ │ ├── game-data.ts │ │ │ │ │ ├── game-list │ │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ │ └── game-list.component.ts │ │ │ │ │ ├── game.model.ts │ │ │ │ │ ├── game.service.ts │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ ├── auth-guard.service.ts │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.ts │ │ │ │ │ ├── user.model.ts │ │ │ │ │ └── user.module.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 │ ├── 05-registering-core-services │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ ├── core.module.ts │ │ │ │ │ └── http-data-logger.service.ts │ │ │ │ ├── games │ │ │ │ │ ├── game-data.ts │ │ │ │ │ ├── game-list │ │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ │ └── game-list.component.ts │ │ │ │ │ ├── game.model.ts │ │ │ │ │ ├── game.service.ts │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ ├── auth-guard.service.ts │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.ts │ │ │ │ │ ├── user.model.ts │ │ │ │ │ └── user.module.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 │ ├── 06-notifying-user-changes │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ ├── core.module.ts │ │ │ │ │ └── http-data-logger.service.ts │ │ │ │ ├── games │ │ │ │ │ ├── game-data.ts │ │ │ │ │ ├── game-list │ │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ │ └── game-list.component.ts │ │ │ │ │ ├── game.model.ts │ │ │ │ │ ├── game.service.ts │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ ├── auth-guard.service.ts │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.ts │ │ │ │ │ ├── user.model.ts │ │ │ │ │ └── user.module.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 │ ├── 07-viewchild-and-viewchildren │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ ├── core.module.ts │ │ │ │ │ └── http-data-logger.service.ts │ │ │ │ ├── games │ │ │ │ │ ├── game-data.ts │ │ │ │ │ ├── game-list │ │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ │ └── game-list.component.ts │ │ │ │ │ ├── game.model.ts │ │ │ │ │ ├── game.service.ts │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ ├── auth-guard.service.ts │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.ts │ │ │ │ │ ├── user.model.ts │ │ │ │ │ └── user.module.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 │ ├── 08-child-components │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ ├── core.module.ts │ │ │ │ │ └── http-data-logger.service.ts │ │ │ │ ├── games │ │ │ │ │ ├── game-data.ts │ │ │ │ │ ├── game-list │ │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ │ └── game-list.component.ts │ │ │ │ │ ├── game.model.ts │ │ │ │ │ ├── game.service.ts │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ ├── criteria │ │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ │ └── criteria.component.ts │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ ├── auth-guard.service.ts │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.ts │ │ │ │ │ ├── user.model.ts │ │ │ │ │ └── user.module.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 │ ├── 09-refactor │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ ├── core.module.ts │ │ │ │ │ └── http-data-logger.service.ts │ │ │ │ ├── games │ │ │ │ │ ├── game-data.ts │ │ │ │ │ ├── game-details │ │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ │ └── game-details.component.ts │ │ │ │ │ ├── game-edit │ │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ │ └── game-edit.component.ts │ │ │ │ │ ├── game-list │ │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ │ └── game-list.component.ts │ │ │ │ │ ├── game.model.ts │ │ │ │ │ ├── game.service.ts │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ ├── criteria │ │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ │ └── criteria.component.ts │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ ├── auth-guard.service.ts │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.ts │ │ │ │ │ ├── user.model.ts │ │ │ │ │ └── user.module.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 │ ├── 10-managing-state-property-bag │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ ├── core.module.ts │ │ │ │ │ └── http-data-logger.service.ts │ │ │ │ ├── games │ │ │ │ │ ├── game-data.ts │ │ │ │ │ ├── game-details │ │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ │ └── game-details.component.ts │ │ │ │ │ ├── game-edit │ │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ │ └── game-edit.component.ts │ │ │ │ │ ├── game-list │ │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ │ └── game-list.component.ts │ │ │ │ │ ├── game-parameter.service.ts │ │ │ │ │ ├── game.model.ts │ │ │ │ │ ├── game.service.ts │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ ├── criteria │ │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ │ └── criteria.component.ts │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ ├── auth-guard.service.ts │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.ts │ │ │ │ │ ├── user.model.ts │ │ │ │ │ └── user.module.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 │ ├── 11-state-management-service │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ ├── core.module.ts │ │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ │ └── http-error-handler.service.ts │ │ │ │ ├── games │ │ │ │ │ ├── game-data.ts │ │ │ │ │ ├── game-details │ │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ │ └── game-details.component.ts │ │ │ │ │ ├── game-edit │ │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ │ └── game-edit.component.ts │ │ │ │ │ ├── game-list │ │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ │ └── game-list.component.ts │ │ │ │ │ ├── game-parameter.service.ts │ │ │ │ │ ├── game.model.ts │ │ │ │ │ ├── game.service.ts │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ ├── criteria │ │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ │ └── criteria.component.ts │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ ├── auth-guard.service.ts │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.ts │ │ │ │ │ ├── user.model.ts │ │ │ │ │ └── user.module.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 │ ├── 12-refactor │ │ └── game-catalog │ │ │ ├── .browserslistrc │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── karma.conf.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── core │ │ │ │ │ ├── core.module.ts │ │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ │ └── http-error-handler.service.ts │ │ │ │ ├── games │ │ │ │ │ ├── game-data.ts │ │ │ │ │ ├── game-details │ │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ │ └── game-details.component.ts │ │ │ │ │ ├── game-edit │ │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ │ └── game-edit.component.ts │ │ │ │ │ ├── game-list │ │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ │ └── game-list.component.ts │ │ │ │ │ ├── game-parameter.service.ts │ │ │ │ │ ├── game-summary │ │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ │ └── game-summary.component.ts │ │ │ │ │ ├── game.model.ts │ │ │ │ │ ├── game.service.ts │ │ │ │ │ └── games.module.ts │ │ │ │ ├── home │ │ │ │ │ ├── menu.component.html │ │ │ │ │ ├── menu.component.ts │ │ │ │ │ ├── page-not-found.component.ts │ │ │ │ │ ├── shell.component.html │ │ │ │ │ ├── shell.component.ts │ │ │ │ │ ├── welcome.component.html │ │ │ │ │ └── welcome.component.ts │ │ │ │ ├── shared │ │ │ │ │ ├── criteria │ │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ │ └── criteria.component.ts │ │ │ │ │ └── shared.module.ts │ │ │ │ └── user │ │ │ │ │ ├── auth-guard.service.ts │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.ts │ │ │ │ │ ├── user.model.ts │ │ │ │ │ └── user.module.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 │ └── 13-communicate-concurrent-components │ │ └── game-catalog │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── .vscode │ │ ├── extensions.json │ │ ├── launch.json │ │ └── tasks.json │ │ ├── README.md │ │ ├── angular.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── http-data-logger.service.ts │ │ │ │ └── http-error-handler.service.ts │ │ │ ├── games │ │ │ │ ├── game-data.ts │ │ │ │ ├── game-details │ │ │ │ │ ├── game-details.component.css │ │ │ │ │ ├── game-details.component.html │ │ │ │ │ └── game-details.component.ts │ │ │ │ ├── game-edit │ │ │ │ │ ├── game-edit.component.css │ │ │ │ │ ├── game-edit.component.html │ │ │ │ │ └── game-edit.component.ts │ │ │ │ ├── game-list │ │ │ │ │ ├── game-list.component.css │ │ │ │ │ ├── game-list.component.html │ │ │ │ │ └── game-list.component.ts │ │ │ │ ├── game-parameter.service.ts │ │ │ │ ├── game-summary │ │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ │ ├── game-summary-list.component.html │ │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ │ ├── game-summary.component.html │ │ │ │ │ └── game-summary.component.ts │ │ │ │ ├── game.model.ts │ │ │ │ ├── game.service.ts │ │ │ │ └── games.module.ts │ │ │ ├── home │ │ │ │ ├── menu.component.html │ │ │ │ ├── menu.component.ts │ │ │ │ ├── page-not-found.component.ts │ │ │ │ ├── shell.component.html │ │ │ │ ├── shell.component.ts │ │ │ │ ├── welcome.component.html │ │ │ │ └── welcome.component.ts │ │ │ ├── shared │ │ │ │ ├── criteria │ │ │ │ │ ├── criteria.component.css │ │ │ │ │ ├── criteria.component.html │ │ │ │ │ └── criteria.component.ts │ │ │ │ └── shared.module.ts │ │ │ └── user │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.ts │ │ │ │ ├── user.model.ts │ │ │ │ └── user.module.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 └── package.json └── angular_17 ├── 01-structure-solution-by-feature └── game-catalog │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── tasks.json │ ├── README.md │ ├── angular.json │ ├── package.json │ ├── src │ ├── app │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── core │ │ │ └── core.module.ts │ │ ├── games │ │ │ └── games.module.ts │ │ ├── home │ │ │ ├── menu.component.html │ │ │ ├── menu.component.ts │ │ │ ├── page-not-found.component.ts │ │ │ ├── shell.component.html │ │ │ ├── shell.component.ts │ │ │ ├── welcome.component.html │ │ │ └── welcome.component.ts │ │ ├── shared │ │ │ └── shared.module.ts │ │ └── user │ │ │ └── user.module.ts │ ├── assets │ │ └── .gitkeep │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json ├── 02-main-routing-module └── game-catalog │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── tasks.json │ ├── README.md │ ├── angular.json │ ├── package.json │ ├── src │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── core │ │ │ └── core.module.ts │ │ ├── games │ │ │ └── games.module.ts │ │ ├── home │ │ │ ├── menu.component.html │ │ │ ├── menu.component.ts │ │ │ ├── page-not-found.component.ts │ │ │ ├── shell.component.html │ │ │ ├── shell.component.ts │ │ │ ├── welcome.component.html │ │ │ └── welcome.component.ts │ │ ├── shared │ │ │ └── shared.module.ts │ │ └── user │ │ │ └── user.module.ts │ ├── assets │ │ └── .gitkeep │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json ├── 03-eager-module └── game-catalog │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── tasks.json │ ├── README.md │ ├── angular.json │ ├── package.json │ ├── src │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── core │ │ │ └── core.module.ts │ │ ├── games │ │ │ └── games.module.ts │ │ ├── home │ │ │ ├── menu.component.html │ │ │ ├── menu.component.ts │ │ │ ├── page-not-found.component.ts │ │ │ ├── shell.component.html │ │ │ ├── shell.component.ts │ │ │ ├── welcome.component.html │ │ │ └── welcome.component.ts │ │ ├── shared │ │ │ └── shared.module.ts │ │ └── user │ │ │ ├── auth-guard.service.ts │ │ │ ├── auth.service.ts │ │ │ ├── login.component.css │ │ │ ├── login.component.html │ │ │ ├── login.component.ts │ │ │ ├── user.model.ts │ │ │ └── user.module.ts │ ├── assets │ │ └── .gitkeep │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json ├── 04-lazy-modules └── game-catalog │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── tasks.json │ ├── README.md │ ├── angular.json │ ├── package.json │ ├── src │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── core │ │ │ └── core.module.ts │ │ ├── games │ │ │ ├── game-data.ts │ │ │ ├── game-list │ │ │ │ ├── game-list.component.css │ │ │ │ ├── game-list.component.html │ │ │ │ └── game-list.component.ts │ │ │ ├── game.model.ts │ │ │ ├── game.service.ts │ │ │ └── games.module.ts │ │ ├── home │ │ │ ├── menu.component.html │ │ │ ├── menu.component.ts │ │ │ ├── page-not-found.component.ts │ │ │ ├── shell.component.html │ │ │ ├── shell.component.ts │ │ │ ├── welcome.component.html │ │ │ └── welcome.component.ts │ │ ├── shared │ │ │ └── shared.module.ts │ │ └── user │ │ │ ├── auth-guard.service.ts │ │ │ ├── auth.service.ts │ │ │ ├── login.component.css │ │ │ ├── login.component.html │ │ │ ├── login.component.ts │ │ │ ├── user.model.ts │ │ │ └── user.module.ts │ ├── assets │ │ └── .gitkeep │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json ├── 05-registering-core-services └── game-catalog │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── tasks.json │ ├── README.md │ ├── angular.json │ ├── package.json │ ├── src │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── core │ │ │ ├── core.module.ts │ │ │ └── http-data-logger.service.ts │ │ ├── games │ │ │ ├── game-data.ts │ │ │ ├── game-list │ │ │ │ ├── game-list.component.css │ │ │ │ ├── game-list.component.html │ │ │ │ └── game-list.component.ts │ │ │ ├── game.model.ts │ │ │ ├── game.service.ts │ │ │ └── games.module.ts │ │ ├── home │ │ │ ├── menu.component.html │ │ │ ├── menu.component.ts │ │ │ ├── page-not-found.component.ts │ │ │ ├── shell.component.html │ │ │ ├── shell.component.ts │ │ │ ├── welcome.component.html │ │ │ └── welcome.component.ts │ │ ├── shared │ │ │ └── shared.module.ts │ │ └── user │ │ │ ├── auth-guard.service.ts │ │ │ ├── auth.service.ts │ │ │ ├── login.component.css │ │ │ ├── login.component.html │ │ │ ├── login.component.ts │ │ │ ├── user.model.ts │ │ │ └── user.module.ts │ ├── assets │ │ └── .gitkeep │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json ├── 06-notifying-user-changes └── game-catalog │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── tasks.json │ ├── README.md │ ├── angular.json │ ├── package.json │ ├── src │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── core │ │ │ ├── core.module.ts │ │ │ └── http-data-logger.service.ts │ │ ├── games │ │ │ ├── game-data.ts │ │ │ ├── game-list │ │ │ │ ├── game-list.component.css │ │ │ │ ├── game-list.component.html │ │ │ │ └── game-list.component.ts │ │ │ ├── game.model.ts │ │ │ ├── game.service.ts │ │ │ └── games.module.ts │ │ ├── home │ │ │ ├── menu.component.html │ │ │ ├── menu.component.ts │ │ │ ├── page-not-found.component.ts │ │ │ ├── shell.component.html │ │ │ ├── shell.component.ts │ │ │ ├── welcome.component.html │ │ │ └── welcome.component.ts │ │ ├── shared │ │ │ └── shared.module.ts │ │ └── user │ │ │ ├── auth-guard.service.ts │ │ │ ├── auth.service.ts │ │ │ ├── login.component.css │ │ │ ├── login.component.html │ │ │ ├── login.component.ts │ │ │ ├── user.model.ts │ │ │ └── user.module.ts │ ├── assets │ │ └── .gitkeep │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json ├── 07-viewchild-and-viewchildren └── game-catalog │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── tasks.json │ ├── README.md │ ├── angular.json │ ├── package.json │ ├── src │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── core │ │ │ ├── core.module.ts │ │ │ └── http-data-logger.service.ts │ │ ├── games │ │ │ ├── game-data.ts │ │ │ ├── game-list │ │ │ │ ├── game-list.component.css │ │ │ │ ├── game-list.component.html │ │ │ │ └── game-list.component.ts │ │ │ ├── game.model.ts │ │ │ ├── game.service.ts │ │ │ └── games.module.ts │ │ ├── home │ │ │ ├── menu.component.html │ │ │ ├── menu.component.ts │ │ │ ├── page-not-found.component.ts │ │ │ ├── shell.component.html │ │ │ ├── shell.component.ts │ │ │ ├── welcome.component.html │ │ │ └── welcome.component.ts │ │ ├── shared │ │ │ └── shared.module.ts │ │ └── user │ │ │ ├── auth-guard.service.ts │ │ │ ├── auth.service.ts │ │ │ ├── login.component.css │ │ │ ├── login.component.html │ │ │ ├── login.component.ts │ │ │ ├── user.model.ts │ │ │ └── user.module.ts │ ├── assets │ │ └── .gitkeep │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json ├── 08-child-components └── game-catalog │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── tasks.json │ ├── README.md │ ├── angular.json │ ├── package.json │ ├── src │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── core │ │ │ ├── core.module.ts │ │ │ └── http-data-logger.service.ts │ │ ├── games │ │ │ ├── game-data.ts │ │ │ ├── game-list │ │ │ │ ├── game-list.component.css │ │ │ │ ├── game-list.component.html │ │ │ │ └── game-list.component.ts │ │ │ ├── game.model.ts │ │ │ ├── game.service.ts │ │ │ └── games.module.ts │ │ ├── home │ │ │ ├── menu.component.html │ │ │ ├── menu.component.ts │ │ │ ├── page-not-found.component.ts │ │ │ ├── shell.component.html │ │ │ ├── shell.component.ts │ │ │ ├── welcome.component.html │ │ │ └── welcome.component.ts │ │ ├── shared │ │ │ ├── criteria │ │ │ │ ├── criteria.component.css │ │ │ │ ├── criteria.component.html │ │ │ │ └── criteria.component.ts │ │ │ └── shared.module.ts │ │ └── user │ │ │ ├── auth-guard.service.ts │ │ │ ├── auth.service.ts │ │ │ ├── login.component.css │ │ │ ├── login.component.html │ │ │ ├── login.component.ts │ │ │ ├── user.model.ts │ │ │ └── user.module.ts │ ├── assets │ │ └── .gitkeep │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json ├── 09-refactor └── game-catalog │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── tasks.json │ ├── README.md │ ├── angular.json │ ├── package.json │ ├── src │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── core │ │ │ ├── core.module.ts │ │ │ └── http-data-logger.service.ts │ │ ├── games │ │ │ ├── game-data.ts │ │ │ ├── game-details │ │ │ │ ├── game-details.component.css │ │ │ │ ├── game-details.component.html │ │ │ │ └── game-details.component.ts │ │ │ ├── game-edit │ │ │ │ ├── game-edit.component.css │ │ │ │ ├── game-edit.component.html │ │ │ │ └── game-edit.component.ts │ │ │ ├── game-list │ │ │ │ ├── game-list.component.css │ │ │ │ ├── game-list.component.html │ │ │ │ └── game-list.component.ts │ │ │ ├── game.model.ts │ │ │ ├── game.service.ts │ │ │ └── games.module.ts │ │ ├── home │ │ │ ├── menu.component.html │ │ │ ├── menu.component.ts │ │ │ ├── page-not-found.component.ts │ │ │ ├── shell.component.html │ │ │ ├── shell.component.ts │ │ │ ├── welcome.component.html │ │ │ └── welcome.component.ts │ │ ├── shared │ │ │ ├── criteria │ │ │ │ ├── criteria.component.css │ │ │ │ ├── criteria.component.html │ │ │ │ └── criteria.component.ts │ │ │ └── shared.module.ts │ │ └── user │ │ │ ├── auth-guard.service.ts │ │ │ ├── auth.service.ts │ │ │ ├── login.component.css │ │ │ ├── login.component.html │ │ │ ├── login.component.ts │ │ │ ├── user.model.ts │ │ │ └── user.module.ts │ ├── assets │ │ └── .gitkeep │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json ├── 10-managing-state-property-bag └── game-catalog │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── tasks.json │ ├── README.md │ ├── angular.json │ ├── package.json │ ├── src │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── core │ │ │ ├── core.module.ts │ │ │ └── http-data-logger.service.ts │ │ ├── games │ │ │ ├── game-data.ts │ │ │ ├── game-details │ │ │ │ ├── game-details.component.css │ │ │ │ ├── game-details.component.html │ │ │ │ └── game-details.component.ts │ │ │ ├── game-edit │ │ │ │ ├── game-edit.component.css │ │ │ │ ├── game-edit.component.html │ │ │ │ └── game-edit.component.ts │ │ │ ├── game-list │ │ │ │ ├── game-list.component.css │ │ │ │ ├── game-list.component.html │ │ │ │ └── game-list.component.ts │ │ │ ├── game-parameter.service.ts │ │ │ ├── game.model.ts │ │ │ ├── game.service.ts │ │ │ └── games.module.ts │ │ ├── home │ │ │ ├── menu.component.html │ │ │ ├── menu.component.ts │ │ │ ├── page-not-found.component.ts │ │ │ ├── shell.component.html │ │ │ ├── shell.component.ts │ │ │ ├── welcome.component.html │ │ │ └── welcome.component.ts │ │ ├── shared │ │ │ ├── criteria │ │ │ │ ├── criteria.component.css │ │ │ │ ├── criteria.component.html │ │ │ │ └── criteria.component.ts │ │ │ └── shared.module.ts │ │ └── user │ │ │ ├── auth-guard.service.ts │ │ │ ├── auth.service.ts │ │ │ ├── login.component.css │ │ │ ├── login.component.html │ │ │ ├── login.component.ts │ │ │ ├── user.model.ts │ │ │ └── user.module.ts │ ├── assets │ │ └── .gitkeep │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json ├── 11-state-management-service └── game-catalog │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── tasks.json │ ├── README.md │ ├── angular.json │ ├── package.json │ ├── src │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── core │ │ │ ├── core.module.ts │ │ │ ├── http-data-logger.service.ts │ │ │ └── http-error-handler.service.ts │ │ ├── games │ │ │ ├── game-data.ts │ │ │ ├── game-details │ │ │ │ ├── game-details.component.css │ │ │ │ ├── game-details.component.html │ │ │ │ └── game-details.component.ts │ │ │ ├── game-edit │ │ │ │ ├── game-edit.component.css │ │ │ │ ├── game-edit.component.html │ │ │ │ └── game-edit.component.ts │ │ │ ├── game-list │ │ │ │ ├── game-list.component.css │ │ │ │ ├── game-list.component.html │ │ │ │ └── game-list.component.ts │ │ │ ├── game-parameter.service.ts │ │ │ ├── game.model.ts │ │ │ ├── game.service.ts │ │ │ └── games.module.ts │ │ ├── home │ │ │ ├── menu.component.html │ │ │ ├── menu.component.ts │ │ │ ├── page-not-found.component.ts │ │ │ ├── shell.component.html │ │ │ ├── shell.component.ts │ │ │ ├── welcome.component.html │ │ │ └── welcome.component.ts │ │ ├── shared │ │ │ ├── criteria │ │ │ │ ├── criteria.component.css │ │ │ │ ├── criteria.component.html │ │ │ │ └── criteria.component.ts │ │ │ └── shared.module.ts │ │ └── user │ │ │ ├── auth-guard.service.ts │ │ │ ├── auth.service.ts │ │ │ ├── login.component.css │ │ │ ├── login.component.html │ │ │ ├── login.component.ts │ │ │ ├── user.model.ts │ │ │ └── user.module.ts │ ├── assets │ │ └── .gitkeep │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json ├── 12-refactor └── game-catalog │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── tasks.json │ ├── README.md │ ├── angular.json │ ├── package.json │ ├── src │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── core │ │ │ ├── core.module.ts │ │ │ ├── http-data-logger.service.ts │ │ │ └── http-error-handler.service.ts │ │ ├── games │ │ │ ├── game-data.ts │ │ │ ├── game-details │ │ │ │ ├── game-details.component.css │ │ │ │ ├── game-details.component.html │ │ │ │ └── game-details.component.ts │ │ │ ├── game-edit │ │ │ │ ├── game-edit.component.css │ │ │ │ ├── game-edit.component.html │ │ │ │ └── game-edit.component.ts │ │ │ ├── game-list │ │ │ │ ├── game-list.component.css │ │ │ │ ├── game-list.component.html │ │ │ │ └── game-list.component.ts │ │ │ ├── game-parameter.service.ts │ │ │ ├── game-summary │ │ │ │ ├── game-summary-detail.component.html │ │ │ │ ├── game-summary-detail.component.ts │ │ │ │ ├── game-summary-list.component.html │ │ │ │ ├── game-summary-list.component.ts │ │ │ │ ├── game-summary.component.html │ │ │ │ └── game-summary.component.ts │ │ │ ├── game.model.ts │ │ │ ├── game.service.ts │ │ │ └── games.module.ts │ │ ├── home │ │ │ ├── menu.component.html │ │ │ ├── menu.component.ts │ │ │ ├── page-not-found.component.ts │ │ │ ├── shell.component.html │ │ │ ├── shell.component.ts │ │ │ ├── welcome.component.html │ │ │ └── welcome.component.ts │ │ ├── shared │ │ │ ├── criteria │ │ │ │ ├── criteria.component.css │ │ │ │ ├── criteria.component.html │ │ │ │ └── criteria.component.ts │ │ │ └── shared.module.ts │ │ └── user │ │ │ ├── auth-guard.service.ts │ │ │ ├── auth.service.ts │ │ │ ├── login.component.css │ │ │ ├── login.component.html │ │ │ ├── login.component.ts │ │ │ ├── user.model.ts │ │ │ └── user.module.ts │ ├── assets │ │ └── .gitkeep │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json └── 13-communicate-concurrent-components └── game-catalog ├── .editorconfig ├── .gitignore ├── .vscode ├── extensions.json ├── launch.json └── tasks.json ├── README.md ├── angular.json ├── package.json ├── src ├── app │ ├── app-routing.module.ts │ ├── app.component.css │ ├── app.component.html │ ├── app.component.spec.ts │ ├── app.component.ts │ ├── app.module.ts │ ├── core │ │ ├── core.module.ts │ │ ├── http-data-logger.service.ts │ │ └── http-error-handler.service.ts │ ├── games │ │ ├── game-data.ts │ │ ├── game-details │ │ │ ├── game-details.component.css │ │ │ ├── game-details.component.html │ │ │ └── game-details.component.ts │ │ ├── game-edit │ │ │ ├── game-edit.component.css │ │ │ ├── game-edit.component.html │ │ │ └── game-edit.component.ts │ │ ├── game-list │ │ │ ├── game-list.component.css │ │ │ ├── game-list.component.html │ │ │ └── game-list.component.ts │ │ ├── game-parameter.service.ts │ │ ├── game-summary │ │ │ ├── game-summary-detail.component.html │ │ │ ├── game-summary-detail.component.ts │ │ │ ├── game-summary-list.component.html │ │ │ ├── game-summary-list.component.ts │ │ │ ├── game-summary.component.html │ │ │ └── game-summary.component.ts │ │ ├── game.model.ts │ │ ├── game.service.ts │ │ └── games.module.ts │ ├── home │ │ ├── menu.component.html │ │ ├── menu.component.ts │ │ ├── page-not-found.component.ts │ │ ├── shell.component.html │ │ ├── shell.component.ts │ │ ├── welcome.component.html │ │ └── welcome.component.ts │ ├── shared │ │ ├── criteria │ │ │ ├── criteria.component.css │ │ │ ├── criteria.component.html │ │ │ └── criteria.component.ts │ │ └── shared.module.ts │ └── user │ │ ├── auth-guard.service.ts │ │ ├── auth.service.ts │ │ ├── login.component.css │ │ ├── login.component.html │ │ ├── login.component.ts │ │ ├── user.model.ts │ │ └── user.module.ts ├── assets │ └── .gitkeep ├── favicon.ico ├── index.html ├── main.ts └── styles.css ├── tsconfig.app.json ├── tsconfig.json └── tsconfig.spec.json /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/README.md -------------------------------------------------------------------------------- /angular 6/Demos/01 structure solution by features/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/01 structure solution by features/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/01 structure solution by features/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/02 main routing module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/02 main routing module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/02 main routing module/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/03 eager module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/03 eager module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/03 eager module/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/04 lazy module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/04 lazy module/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/04 lazy module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/04 lazy module/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/05 registering core services/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /angular 6/Demos/05 registering core services/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/05 registering core services/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/05 registering core services/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/06 notifying user changes/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/06 notifying user changes/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/06 notifying user changes/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/06 notifying user changes/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/07 viewchild and viewchildren/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/07 viewchild and viewchildren/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/07 viewchild and viewchildren/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/07 viewchild and viewchildren/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/08 child components/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/08 child components/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/08 child components/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/08 child components/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/08 child components/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/09 refactor/game-catalog/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular 6/Demos/09 refactor/game-catalog/.gitignore -------------------------------------------------------------------------------- /angular 6/Demos/09 refactor/game-catalog/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular 6/Demos/09 refactor/game-catalog/README.md -------------------------------------------------------------------------------- /angular 6/Demos/09 refactor/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/09 refactor/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/09 refactor/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/09 refactor/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/09 refactor/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/09 refactor/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/09 refactor/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/09 refactor/game-catalog/src/main.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular 6/Demos/09 refactor/game-catalog/src/main.ts -------------------------------------------------------------------------------- /angular 6/Demos/09 refactor/game-catalog/src/test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular 6/Demos/09 refactor/game-catalog/src/test.ts -------------------------------------------------------------------------------- /angular 6/Demos/09 refactor/game-catalog/tslint.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular 6/Demos/09 refactor/game-catalog/tslint.json -------------------------------------------------------------------------------- /angular 6/Demos/10 managing state property bag/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/10 managing state property bag/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/10 managing state property bag/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/10 managing state property bag/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/10 managing state property bag/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/10 managing state property bag/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/10 managing state property bag/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/11 state management service/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/11 state management service/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/11 state management service/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/11 state management service/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/11 state management service/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/11 state management service/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/11 state management service/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/12 refactor/game-catalog/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular 6/Demos/12 refactor/game-catalog/.gitignore -------------------------------------------------------------------------------- /angular 6/Demos/12 refactor/game-catalog/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular 6/Demos/12 refactor/game-catalog/README.md -------------------------------------------------------------------------------- /angular 6/Demos/12 refactor/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/12 refactor/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/12 refactor/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/12 refactor/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/12 refactor/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/12 refactor/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/12 refactor/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/12 refactor/game-catalog/src/main.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular 6/Demos/12 refactor/game-catalog/src/main.ts -------------------------------------------------------------------------------- /angular 6/Demos/12 refactor/game-catalog/src/test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular 6/Demos/12 refactor/game-catalog/src/test.ts -------------------------------------------------------------------------------- /angular 6/Demos/12 refactor/game-catalog/tslint.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular 6/Demos/12 refactor/game-catalog/tslint.json -------------------------------------------------------------------------------- /angular 6/Demos/13 communicate concurrent compenents/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/13 communicate concurrent compenents/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/13 communicate concurrent compenents/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/13 communicate concurrent compenents/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/13 communicate concurrent compenents/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/13 communicate concurrent compenents/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/13 communicate concurrent compenents/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/14 communication with subjects/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/14 communication with subjects/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/14 communication with subjects/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/14 communication with subjects/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/14 communication with subjects/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/14 communication with subjects/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/14 communication with subjects/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/15 refactor video-game-console module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/15 refactor video-game-console module/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/15 refactor video-game-console module/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/15 refactor video-game-console module/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/15 refactor video-game-console module/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/15 refactor video-game-console module/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/15 refactor video-game-console module/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/15 refactor video-game-console module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/15 refactor video-game-console module/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/16 ngrx basic setup/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/16 ngrx basic setup/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/16 ngrx basic setup/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/16 ngrx basic setup/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/16 ngrx basic setup/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/16 ngrx basic setup/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/16 ngrx basic setup/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/16 ngrx basic setup/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/16 ngrx basic setup/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/17 ngrx dispatching an action/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/17 ngrx dispatching an action/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/17 ngrx dispatching an action/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/17 ngrx dispatching an action/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/17 ngrx dispatching an action/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/17 ngrx dispatching an action/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/17 ngrx dispatching an action/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/17 ngrx dispatching an action/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/17 ngrx dispatching an action/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/18 redux dev tools/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/18 redux dev tools/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/18 redux dev tools/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/18 redux dev tools/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/18 redux dev tools/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/18 redux dev tools/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/18 redux dev tools/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/18 redux dev tools/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/18 redux dev tools/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/19 state enhancement/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/19 state enhancement/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/19 state enhancement/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/19 state enhancement/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/19 state enhancement/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/19 state enhancement/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/19 state enhancement/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/19 state enhancement/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/19 state enhancement/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/20 building selectors/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/20 building selectors/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/20 building selectors/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/20 building selectors/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/20 building selectors/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/20 building selectors/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/20 building selectors/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/20 building selectors/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/20 building selectors/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/21 building action creators/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/21 building action creators/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/21 building action creators/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/21 building action creators/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/21 building action creators/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/21 building action creators/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/21 building action creators/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/21 building action creators/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/21 building action creators/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/22 using an effect/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/22 using an effect/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/22 using an effect/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/22 using an effect/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/22 using an effect/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/22 using an effect/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/22 using an effect/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/22 using an effect/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/22 using an effect/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/23 unsubscribing observables/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/23 unsubscribing observables/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/23 unsubscribing observables/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/23 unsubscribing observables/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/23 unsubscribing observables/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/23 unsubscribing observables/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/23 unsubscribing observables/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/23 unsubscribing observables/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/23 unsubscribing observables/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/24 exception handling in effects/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/24 exception handling in effects/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/24 exception handling in effects/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/24 exception handling in effects/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/24 exception handling in effects/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/24 exception handling in effects/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/24 exception handling in effects/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/24 exception handling in effects/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/24 exception handling in effects/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/25 update video console/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/25 update video console/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/25 update video console/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/25 update video console/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/25 update video console/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/25 update video console/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/25 update video console/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/25 update video console/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/25 update video console/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/26 container components/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/26 container components/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/26 container components/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/26 container components/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/26 container components/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/26 container components/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/26 container components/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/26 container components/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/26 container components/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/27 presentational components/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/27 presentational components/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/27 presentational components/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/27 presentational components/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/27 presentational components/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/27 presentational components/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/27 presentational components/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/27 presentational components/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/27 presentational components/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/28 on push detection/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/28 on push detection/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/28 on push detection/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/28 on push detection/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/28 on push detection/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/28 on push detection/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/28 on push detection/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/28 on push detection/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/28 on push detection/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/29 creating a barrel/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/29 creating a barrel/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/29 creating a barrel/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/29 creating a barrel/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/29 creating a barrel/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/29 creating a barrel/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/29 creating a barrel/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/29 creating a barrel/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/29 creating a barrel/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/30 real time application/chat-client/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/30 real time application/chat-client/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/30 real time application/chat-client/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/30 real time application/server/src/namespaces/index.js: -------------------------------------------------------------------------------- 1 | module.exports.chat = require('./chat'); -------------------------------------------------------------------------------- /angular 6/Demos/31 angular universal/universalApp/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/31 angular universal/universalApp/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/31 angular universal/universalApp/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/32 angular i18n/i18nExample/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/32 angular i18n/i18nExample/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |

2 | Welcome to {{ title }}! 3 |

4 | 5 | -------------------------------------------------------------------------------- /angular 6/Demos/32 angular i18n/i18nExample/src/app/templates/templates.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/32 angular i18n/i18nExample/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/32 angular i18n/i18nExample/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 6/Demos/33 angular i18n server/i18nExample/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/33 angular i18n server/i18nExample/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |

2 | Welcome to {{ title }}! 3 |

4 | 5 | -------------------------------------------------------------------------------- /angular 6/Demos/33 angular i18n server/i18nExample/src/app/templates/templates.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/33 angular i18n server/i18nExample/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 6/Demos/33 angular i18n server/i18nExample/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/01 structure solution by features/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/01 structure solution by features/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/01 structure solution by features/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/02 main routing module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/02 main routing module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/02 main routing module/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/03 eager module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/03 eager module/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/03 eager module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/03 eager module/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/04 lazy module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/04 lazy module/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/04 lazy module/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/04 lazy module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/04 lazy module/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/05 registering core services/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/05 registering core services/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/05 registering core services/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/05 registering core services/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/05 registering core services/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/06 notifying user changes/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/06 notifying user changes/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/06 notifying user changes/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/06 notifying user changes/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/06 notifying user changes/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/07 viewchild and viewchildren/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/07 viewchild and viewchildren/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/07 viewchild and viewchildren/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/07 viewchild and viewchildren/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/07 viewchild and viewchildren/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/08 child components/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/08 child components/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/08 child components/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/08 child components/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/08 child components/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/08 child components/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/09 refactor/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/09 refactor/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/09 refactor/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/09 refactor/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/09 refactor/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/09 refactor/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/09 refactor/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/09 refactor/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/10 managing state property bag/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/10 managing state property bag/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/10 managing state property bag/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/10 managing state property bag/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/10 managing state property bag/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/10 managing state property bag/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/10 managing state property bag/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/10 managing state property bag/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/11 state management service/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/11 state management service/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/11 state management service/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/11 state management service/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/11 state management service/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/11 state management service/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/11 state management service/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/11 state management service/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/12 refactor/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/12 refactor/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/12 refactor/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/12 refactor/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/12 refactor/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/12 refactor/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/12 refactor/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/12 refactor/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/13 communicate concurrent components/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/13 communicate concurrent components/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/13 communicate concurrent components/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/13 communicate concurrent components/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/13 communicate concurrent components/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/13 communicate concurrent components/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/13 communicate concurrent components/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/13 communicate concurrent components/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/14 communication with subjects/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/14 communication with subjects/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/14 communication with subjects/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/14 communication with subjects/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/14 communication with subjects/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/14 communication with subjects/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/14 communication with subjects/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/14 communication with subjects/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/15 refactor video-game-console module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/15 refactor video-game-console module/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/15 refactor video-game-console module/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/15 refactor video-game-console module/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/15 refactor video-game-console module/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/15 refactor video-game-console module/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/15 refactor video-game-console module/game-catalog/src/app/video-consoles/video-console-board/video-console-board.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/15 refactor video-game-console module/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/15 refactor video-game-console module/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/15 refactor video-game-console module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/15 refactor video-game-console module/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/16 ngrx basic setup/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/16 ngrx basic setup/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/16 ngrx basic setup/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/16 ngrx basic setup/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/16 ngrx basic setup/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/16 ngrx basic setup/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/16 ngrx basic setup/game-catalog/src/app/video-consoles/video-console-board/video-console-board.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/16 ngrx basic setup/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/16 ngrx basic setup/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/16 ngrx basic setup/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/16 ngrx basic setup/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/17 ngrx dispatching an action/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/17 ngrx dispatching an action/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/17 ngrx dispatching an action/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/17 ngrx dispatching an action/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/17 ngrx dispatching an action/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/17 ngrx dispatching an action/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/17 ngrx dispatching an action/game-catalog/src/app/video-consoles/video-console-board/video-console-board.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/17 ngrx dispatching an action/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/17 ngrx dispatching an action/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/17 ngrx dispatching an action/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/17 ngrx dispatching an action/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/18 redux dev tools/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/18 redux dev tools/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/18 redux dev tools/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/18 redux dev tools/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/18 redux dev tools/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/18 redux dev tools/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/18 redux dev tools/game-catalog/src/app/video-consoles/video-console-board/video-console-board.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/18 redux dev tools/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/18 redux dev tools/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/18 redux dev tools/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/18 redux dev tools/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/19 state enhancement/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/19 state enhancement/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/19 state enhancement/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/19 state enhancement/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/19 state enhancement/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/19 state enhancement/game-catalog/src/app/state/app.state.ts: -------------------------------------------------------------------------------- 1 | export interface Sate {} 2 | 3 | 4 | -------------------------------------------------------------------------------- /angular 8/Demos/19 state enhancement/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/19 state enhancement/game-catalog/src/app/video-consoles/video-console-board/video-console-board.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/19 state enhancement/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/19 state enhancement/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/19 state enhancement/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/19 state enhancement/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/20 building selectors/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/20 building selectors/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/20 building selectors/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/20 building selectors/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/20 building selectors/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/20 building selectors/game-catalog/src/app/state/app.state.ts: -------------------------------------------------------------------------------- 1 | export interface Sate {} 2 | 3 | 4 | -------------------------------------------------------------------------------- /angular 8/Demos/20 building selectors/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/20 building selectors/game-catalog/src/app/video-consoles/video-console-board/video-console-board.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/20 building selectors/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/20 building selectors/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/20 building selectors/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/20 building selectors/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/21 building action creators/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/21 building action creators/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/21 building action creators/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/21 building action creators/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/21 building action creators/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/21 building action creators/game-catalog/src/app/state/app.state.ts: -------------------------------------------------------------------------------- 1 | export interface Sate {} 2 | 3 | 4 | -------------------------------------------------------------------------------- /angular 8/Demos/21 building action creators/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/21 building action creators/game-catalog/src/app/video-consoles/video-console-board/video-console-board.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/21 building action creators/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/21 building action creators/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/21 building action creators/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/21 building action creators/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/22 using an effect/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/22 using an effect/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/22 using an effect/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/22 using an effect/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/22 using an effect/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/22 using an effect/game-catalog/src/app/state/app.state.ts: -------------------------------------------------------------------------------- 1 | export interface Sate {} 2 | 3 | 4 | -------------------------------------------------------------------------------- /angular 8/Demos/22 using an effect/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/22 using an effect/game-catalog/src/app/video-consoles/video-console-board/video-console-board.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/22 using an effect/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/22 using an effect/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/22 using an effect/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/22 using an effect/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/23 unsubscribing observables/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/23 unsubscribing observables/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/23 unsubscribing observables/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/23 unsubscribing observables/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/23 unsubscribing observables/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/23 unsubscribing observables/game-catalog/src/app/state/app.state.ts: -------------------------------------------------------------------------------- 1 | export interface Sate {} 2 | 3 | 4 | -------------------------------------------------------------------------------- /angular 8/Demos/23 unsubscribing observables/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/23 unsubscribing observables/game-catalog/src/app/video-consoles/video-console-board/video-console-board.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/23 unsubscribing observables/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/23 unsubscribing observables/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/23 unsubscribing observables/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/23 unsubscribing observables/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/24 exception handling in effects/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/24 exception handling in effects/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/24 exception handling in effects/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/24 exception handling in effects/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/24 exception handling in effects/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/24 exception handling in effects/game-catalog/src/app/state/app.state.ts: -------------------------------------------------------------------------------- 1 | export interface Sate {} 2 | 3 | 4 | -------------------------------------------------------------------------------- /angular 8/Demos/24 exception handling in effects/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/24 exception handling in effects/game-catalog/src/app/video-consoles/video-console-board/video-console-board.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/24 exception handling in effects/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/24 exception handling in effects/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/24 exception handling in effects/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/24 exception handling in effects/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/25 update video console/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/25 update video console/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/25 update video console/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/25 update video console/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/25 update video console/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/25 update video console/game-catalog/src/app/state/app.state.ts: -------------------------------------------------------------------------------- 1 | export interface Sate {} 2 | 3 | 4 | -------------------------------------------------------------------------------- /angular 8/Demos/25 update video console/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/25 update video console/game-catalog/src/app/video-consoles/video-console-board/video-console-board.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/25 update video console/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/25 update video console/game-catalog/src/app/video-consoles/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/25 update video console/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/25 update video console/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/26 container components/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/26 container components/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/26 container components/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/26 container components/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/26 container components/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/26 container components/game-catalog/src/app/state/app.state.ts: -------------------------------------------------------------------------------- 1 | export interface Sate {} 2 | 3 | 4 | -------------------------------------------------------------------------------- /angular 8/Demos/26 container components/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/26 container components/game-catalog/src/app/video-consoles/components/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/26 container components/game-catalog/src/app/video-consoles/containers/video-console-board/video-console-board.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/26 container components/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/26 container components/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/26 container components/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/27 presentational components/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/27 presentational components/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/27 presentational components/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/27 presentational components/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/27 presentational components/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/27 presentational components/game-catalog/src/app/state/app.state.ts: -------------------------------------------------------------------------------- 1 | export interface Sate {} 2 | 3 | 4 | -------------------------------------------------------------------------------- /angular 8/Demos/27 presentational components/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/27 presentational components/game-catalog/src/app/video-consoles/components/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/27 presentational components/game-catalog/src/app/video-consoles/containers/video-console-board/video-console-board.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/27 presentational components/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/27 presentational components/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/27 presentational components/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/28 on push detection/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/28 on push detection/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/28 on push detection/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/28 on push detection/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/28 on push detection/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/28 on push detection/game-catalog/src/app/state/app.state.ts: -------------------------------------------------------------------------------- 1 | export interface Sate {} 2 | 3 | 4 | -------------------------------------------------------------------------------- /angular 8/Demos/28 on push detection/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/28 on push detection/game-catalog/src/app/video-consoles/components/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/28 on push detection/game-catalog/src/app/video-consoles/containers/video-console-board/video-console-board.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/28 on push detection/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/28 on push detection/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/28 on push detection/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular 8/Demos/29 creating a barrel/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/29 creating a barrel/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/29 creating a barrel/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/29 creating a barrel/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/29 creating a barrel/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/29 creating a barrel/game-catalog/src/app/state/app.state.ts: -------------------------------------------------------------------------------- 1 | export interface Sate {} 2 | 3 | 4 | -------------------------------------------------------------------------------- /angular 8/Demos/29 creating a barrel/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/29 creating a barrel/game-catalog/src/app/video-consoles/components/video-console-list/video-console-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/29 creating a barrel/game-catalog/src/app/video-consoles/containers/video-console-board/video-console-board.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/29 creating a barrel/game-catalog/src/app/video-consoles/video-console-edit/video-console-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/29 creating a barrel/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular 8/Demos/29 creating a barrel/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_11/demos/01-structure-solution-by-feature/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/01-structure-solution-by-feature/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/01-structure-solution-by-feature/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_11/demos/02-main-routing-module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/02-main-routing-module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/02-main-routing-module/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_11/demos/03-eager-module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/03-eager-module/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/03-eager-module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/03-eager-module/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_11/demos/04-lazy-module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/04-lazy-module/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/04-lazy-module/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/04-lazy-module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/04-lazy-module/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_11/demos/05-registering-core-services/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/05-registering-core-services/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/05-registering-core-services/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/05-registering-core-services/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/05-registering-core-services/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_11/demos/06-notifying-user-changes/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/06-notifying-user-changes/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/06-notifying-user-changes/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/06-notifying-user-changes/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/06-notifying-user-changes/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_11/demos/07-viewchild-and-viewchildren/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/07-viewchild-and-viewchildren/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/07-viewchild-and-viewchildren/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/07-viewchild-and-viewchildren/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/07-viewchild-and-viewchildren/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_11/demos/08-child-components/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/08-child-components/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/08-child-components/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/08-child-components/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/08-child-components/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/08-child-components/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_11/demos/09-refactor/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/09-refactor/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/09-refactor/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/09-refactor/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/09-refactor/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/09-refactor/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/09-refactor/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/09-refactor/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_11/demos/10-managing-state-property-bag/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/10-managing-state-property-bag/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/10-managing-state-property-bag/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/10-managing-state-property-bag/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/10-managing-state-property-bag/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/10-managing-state-property-bag/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/10-managing-state-property-bag/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/10-managing-state-property-bag/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_11/demos/11-state-management-service/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/11-state-management-service/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/11-state-management-service/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/11-state-management-service/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/11-state-management-service/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/11-state-management-service/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/11-state-management-service/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/11-state-management-service/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_11/demos/12-refactor/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/12-refactor/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/12-refactor/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/12-refactor/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/12-refactor/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/12-refactor/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/12-refactor/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/12-refactor/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_11/demos/13-communicate-concurrent-components/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/13-communicate-concurrent-components/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/13-communicate-concurrent-components/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/13-communicate-concurrent-components/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/13-communicate-concurrent-components/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/13-communicate-concurrent-components/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/13-communicate-concurrent-components/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/13-communicate-concurrent-components/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_11/demos/14-communication-with-subjects/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/14-communication-with-subjects/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/14-communication-with-subjects/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/14-communication-with-subjects/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/14-communication-with-subjects/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/14-communication-with-subjects/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/14-communication-with-subjects/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_11/demos/14-communication-with-subjects/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_12/demos/01-structure-solution-by-feature/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/01-structure-solution-by-feature/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/01-structure-solution-by-feature/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_12/demos/02-main-routing-module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/02-main-routing-module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/02-main-routing-module/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_12/demos/03-eager-module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/03-eager-module/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/03-eager-module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/03-eager-module/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_12/demos/04-lazy-module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/04-lazy-module/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/04-lazy-module/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/04-lazy-module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/04-lazy-module/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_12/demos/05-registering-core-services/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/05-registering-core-services/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/05-registering-core-services/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/05-registering-core-services/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/05-registering-core-services/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_12/demos/06-notifying-user-changes/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/06-notifying-user-changes/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/06-notifying-user-changes/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/06-notifying-user-changes/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/06-notifying-user-changes/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_12/demos/07-viewchild-and-viewchildren/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/07-viewchild-and-viewchildren/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/07-viewchild-and-viewchildren/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/07-viewchild-and-viewchildren/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/07-viewchild-and-viewchildren/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_12/demos/08-child-components/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/08-child-components/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/08-child-components/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/08-child-components/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/08-child-components/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/08-child-components/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_12/demos/09-refactor/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/09-refactor/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/09-refactor/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/09-refactor/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/09-refactor/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/09-refactor/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/09-refactor/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/09-refactor/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_12/demos/10-managing-state-property-bag/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/10-managing-state-property-bag/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/10-managing-state-property-bag/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/10-managing-state-property-bag/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/10-managing-state-property-bag/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/10-managing-state-property-bag/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/10-managing-state-property-bag/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/10-managing-state-property-bag/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_12/demos/11-state-management-service/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/11-state-management-service/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/11-state-management-service/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/11-state-management-service/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/11-state-management-service/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/11-state-management-service/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/11-state-management-service/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/11-state-management-service/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_12/demos/12-refactor/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/12-refactor/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/12-refactor/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/12-refactor/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/12-refactor/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/12-refactor/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/12-refactor/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/12-refactor/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_12/demos/13-communicate-concurrent-components/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/13-communicate-concurrent-components/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/13-communicate-concurrent-components/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/13-communicate-concurrent-components/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/13-communicate-concurrent-components/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/13-communicate-concurrent-components/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/13-communicate-concurrent-components/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/13-communicate-concurrent-components/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_12/demos/14-communication-with-subjects/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/14-communication-with-subjects/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/14-communication-with-subjects/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/14-communication-with-subjects/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/14-communication-with-subjects/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/14-communication-with-subjects/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/14-communication-with-subjects/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_12/demos/14-communication-with-subjects/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_13/.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular_13/.devcontainer/devcontainer.json -------------------------------------------------------------------------------- /angular_13/demos/01-structure-solution-by-feature/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/01-structure-solution-by-feature/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/01-structure-solution-by-feature/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_13/demos/02-main-routing-module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/02-main-routing-module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/02-main-routing-module/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_13/demos/03-eager-module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/03-eager-module/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/03-eager-module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/03-eager-module/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_13/demos/04-lazy-module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/04-lazy-module/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/04-lazy-module/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/04-lazy-module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/04-lazy-module/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_13/demos/05-registering-core-services/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/05-registering-core-services/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/05-registering-core-services/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/05-registering-core-services/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/05-registering-core-services/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_13/demos/06-notifying-user-changes/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/06-notifying-user-changes/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/06-notifying-user-changes/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/06-notifying-user-changes/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/06-notifying-user-changes/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_13/demos/07-viewchild-and-viewchildren/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/07-viewchild-and-viewchildren/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/07-viewchild-and-viewchildren/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/07-viewchild-and-viewchildren/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/07-viewchild-and-viewchildren/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_13/demos/08-child-components/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/08-child-components/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/08-child-components/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/08-child-components/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/08-child-components/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/08-child-components/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_13/demos/09-refactor/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/09-refactor/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/09-refactor/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/09-refactor/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/09-refactor/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/09-refactor/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/09-refactor/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/09-refactor/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_13/demos/10-managing-state-property-bag/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/10-managing-state-property-bag/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/10-managing-state-property-bag/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/10-managing-state-property-bag/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/10-managing-state-property-bag/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/10-managing-state-property-bag/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/10-managing-state-property-bag/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/10-managing-state-property-bag/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_13/demos/11-state-management-service/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/11-state-management-service/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/11-state-management-service/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/11-state-management-service/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/11-state-management-service/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/11-state-management-service/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/11-state-management-service/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/11-state-management-service/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_13/demos/12-refactor/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/12-refactor/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/12-refactor/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/12-refactor/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/12-refactor/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/12-refactor/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/12-refactor/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/12-refactor/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_13/demos/13-communicate-concurrent-components/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/13-communicate-concurrent-components/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/13-communicate-concurrent-components/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/13-communicate-concurrent-components/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/13-communicate-concurrent-components/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/13-communicate-concurrent-components/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/13-communicate-concurrent-components/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_13/demos/13-communicate-concurrent-components/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_13/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular_13/package.json -------------------------------------------------------------------------------- /angular_14/demos/01-structure-solution-by-feature/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/01-structure-solution-by-feature/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/01-structure-solution-by-feature/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_14/demos/02-main-routing-module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/02-main-routing-module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/02-main-routing-module/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_14/demos/03-eager-module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/03-eager-module/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/03-eager-module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/03-eager-module/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_14/demos/04-lazy-module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/04-lazy-module/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/04-lazy-module/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/04-lazy-module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/04-lazy-module/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_14/demos/05-registering-core-services/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/05-registering-core-services/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/05-registering-core-services/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/05-registering-core-services/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/05-registering-core-services/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_14/demos/06-notifying-user-changes/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/06-notifying-user-changes/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/06-notifying-user-changes/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/06-notifying-user-changes/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/06-notifying-user-changes/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_14/demos/07-viewchild-and-viewchildren/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/07-viewchild-and-viewchildren/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/07-viewchild-and-viewchildren/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/07-viewchild-and-viewchildren/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/07-viewchild-and-viewchildren/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_14/demos/08-child-components/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/08-child-components/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/08-child-components/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/08-child-components/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/08-child-components/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/08-child-components/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_14/demos/09-refactor/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/09-refactor/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/09-refactor/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/09-refactor/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/09-refactor/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/09-refactor/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/09-refactor/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/09-refactor/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_14/demos/10-managing-state-property-bag/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/10-managing-state-property-bag/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/10-managing-state-property-bag/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/10-managing-state-property-bag/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/10-managing-state-property-bag/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/10-managing-state-property-bag/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/10-managing-state-property-bag/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/10-managing-state-property-bag/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_14/demos/11-state-management-service/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/11-state-management-service/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/11-state-management-service/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/11-state-management-service/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/11-state-management-service/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/11-state-management-service/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/11-state-management-service/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/11-state-management-service/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_14/demos/12-refactor/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/12-refactor/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/12-refactor/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/12-refactor/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/12-refactor/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/12-refactor/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/12-refactor/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/12-refactor/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_14/demos/13-communicate-concurrent-components/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/13-communicate-concurrent-components/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/13-communicate-concurrent-components/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/13-communicate-concurrent-components/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/13-communicate-concurrent-components/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/13-communicate-concurrent-components/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/13-communicate-concurrent-components/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_14/demos/13-communicate-concurrent-components/game-catalog/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular_14/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular_14/package.json -------------------------------------------------------------------------------- /angular_17/01-structure-solution-by-feature/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/01-structure-solution-by-feature/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/02-main-routing-module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/02-main-routing-module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/03-eager-module/game-catalog/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular_17/03-eager-module/game-catalog/README.md -------------------------------------------------------------------------------- /angular_17/03-eager-module/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/03-eager-module/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/03-eager-module/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/04-lazy-modules/game-catalog/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular_17/04-lazy-modules/game-catalog/README.md -------------------------------------------------------------------------------- /angular_17/04-lazy-modules/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/04-lazy-modules/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/04-lazy-modules/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/04-lazy-modules/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/05-registering-core-services/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/05-registering-core-services/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/05-registering-core-services/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/05-registering-core-services/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/06-notifying-user-changes/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/06-notifying-user-changes/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/06-notifying-user-changes/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/06-notifying-user-changes/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/07-viewchild-and-viewchildren/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/07-viewchild-and-viewchildren/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/07-viewchild-and-viewchildren/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/07-viewchild-and-viewchildren/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/08-child-components/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/08-child-components/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/08-child-components/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/08-child-components/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/08-child-components/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/09-refactor/game-catalog/.editorconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular_17/09-refactor/game-catalog/.editorconfig -------------------------------------------------------------------------------- /angular_17/09-refactor/game-catalog/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular_17/09-refactor/game-catalog/.gitignore -------------------------------------------------------------------------------- /angular_17/09-refactor/game-catalog/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular_17/09-refactor/game-catalog/README.md -------------------------------------------------------------------------------- /angular_17/09-refactor/game-catalog/angular.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular_17/09-refactor/game-catalog/angular.json -------------------------------------------------------------------------------- /angular_17/09-refactor/game-catalog/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular_17/09-refactor/game-catalog/package.json -------------------------------------------------------------------------------- /angular_17/09-refactor/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/09-refactor/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/09-refactor/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/09-refactor/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/09-refactor/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/09-refactor/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/09-refactor/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/09-refactor/game-catalog/src/main.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular_17/09-refactor/game-catalog/src/main.ts -------------------------------------------------------------------------------- /angular_17/09-refactor/game-catalog/tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular_17/09-refactor/game-catalog/tsconfig.json -------------------------------------------------------------------------------- /angular_17/10-managing-state-property-bag/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/10-managing-state-property-bag/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/10-managing-state-property-bag/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/10-managing-state-property-bag/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/10-managing-state-property-bag/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/10-managing-state-property-bag/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/10-managing-state-property-bag/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/11-state-management-service/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/11-state-management-service/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/11-state-management-service/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/11-state-management-service/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/11-state-management-service/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/11-state-management-service/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/11-state-management-service/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/12-refactor/game-catalog/.editorconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular_17/12-refactor/game-catalog/.editorconfig -------------------------------------------------------------------------------- /angular_17/12-refactor/game-catalog/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular_17/12-refactor/game-catalog/.gitignore -------------------------------------------------------------------------------- /angular_17/12-refactor/game-catalog/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular_17/12-refactor/game-catalog/README.md -------------------------------------------------------------------------------- /angular_17/12-refactor/game-catalog/angular.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular_17/12-refactor/game-catalog/angular.json -------------------------------------------------------------------------------- /angular_17/12-refactor/game-catalog/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular_17/12-refactor/game-catalog/package.json -------------------------------------------------------------------------------- /angular_17/12-refactor/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/12-refactor/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/12-refactor/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/12-refactor/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/12-refactor/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/12-refactor/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/12-refactor/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/12-refactor/game-catalog/src/main.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular_17/12-refactor/game-catalog/src/main.ts -------------------------------------------------------------------------------- /angular_17/12-refactor/game-catalog/tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/Angular-Architecture-Fundamentals/HEAD/angular_17/12-refactor/game-catalog/tsconfig.json -------------------------------------------------------------------------------- /angular_17/13-communicate-concurrent-components/game-catalog/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/13-communicate-concurrent-components/game-catalog/src/app/games/game-details/game-details.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/13-communicate-concurrent-components/game-catalog/src/app/games/game-edit/game-edit.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/13-communicate-concurrent-components/game-catalog/src/app/games/game-list/game-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/13-communicate-concurrent-components/game-catalog/src/app/shared/criteria/criteria.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/13-communicate-concurrent-components/game-catalog/src/app/user/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular_17/13-communicate-concurrent-components/game-catalog/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | --------------------------------------------------------------------------------