├── apm-begin ├── src │ ├── assets │ │ ├── .gitkeep │ │ └── images │ │ │ └── logo.jpg │ ├── favicon.ico │ ├── app │ │ ├── cart │ │ │ ├── cart.ts │ │ │ ├── cart.service.ts │ │ │ ├── cart-total │ │ │ │ ├── cart-total.component.ts │ │ │ │ └── cart-total.component.html │ │ │ ├── cart-list │ │ │ │ ├── cart-list.component.ts │ │ │ │ └── cart-list.component.html │ │ │ ├── cart-shell │ │ │ │ └── cart-shell.component.ts │ │ │ └── cart-item │ │ │ │ ├── cart-item.component.ts │ │ │ │ └── cart-item.component.html │ │ ├── reviews │ │ │ ├── review.ts │ │ │ ├── review.service.ts │ │ │ └── review-data.ts │ │ ├── app.component.css │ │ ├── home │ │ │ ├── home.component.ts │ │ │ └── home.component.html │ │ ├── products │ │ │ ├── product.service.ts │ │ │ ├── product.ts │ │ │ ├── product-detail │ │ │ │ ├── product-detail.component.ts │ │ │ │ └── product-detail.component.html │ │ │ ├── product-list │ │ │ │ ├── product-list.component.ts │ │ │ │ └── product-list.component.html │ │ │ └── product-data.ts │ │ ├── utilities │ │ │ ├── page-not-found.component.ts │ │ │ └── http-error.service.ts │ │ ├── app-data.ts │ │ ├── app.config.ts │ │ ├── app.component.ts │ │ ├── app.routes.ts │ │ └── app.component.html │ ├── main.ts │ ├── styles.css │ └── index.html ├── .vscode │ ├── extensions.json │ ├── settings.json │ ├── launch.json │ └── tasks.json ├── tsconfig.app.json ├── tsconfig.spec.json ├── .editorconfig ├── .gitignore ├── tsconfig.json ├── README.md ├── package.json └── angular.json ├── apm-final ├── src │ ├── assets │ │ ├── .gitkeep │ │ └── images │ │ │ └── logo.jpg │ ├── favicon.ico │ ├── app │ │ ├── cart │ │ │ ├── cart.ts │ │ │ ├── cart-shell │ │ │ │ └── cart-shell.component.ts │ │ │ ├── cart-list │ │ │ │ ├── cart-list.component.ts │ │ │ │ └── cart-list.component.html │ │ │ ├── cart-total │ │ │ │ ├── cart-total.component.ts │ │ │ │ └── cart-total.component.html │ │ │ ├── cart-item │ │ │ │ ├── cart-item.component.html │ │ │ │ └── cart-item.component.ts │ │ │ └── cart.service.ts │ │ ├── reviews │ │ │ ├── review.ts │ │ │ ├── review.service.ts │ │ │ └── review-data.ts │ │ ├── app.component.css │ │ ├── home │ │ │ ├── home.component.ts │ │ │ └── home.component.html │ │ ├── utilities │ │ │ ├── page-not-found.component.ts │ │ │ └── http-error.service.ts │ │ ├── products │ │ │ ├── product.ts │ │ │ ├── product-list │ │ │ │ ├── product-list.component.html │ │ │ │ └── product-list.component.ts │ │ │ ├── product-detail │ │ │ │ ├── product-detail.component.ts │ │ │ │ └── product-detail.component.html │ │ │ ├── product-data.ts │ │ │ └── product.service.ts │ │ ├── app-data.ts │ │ ├── app.config.ts │ │ ├── app.component.ts │ │ ├── app.routes.ts │ │ └── app.component.html │ ├── main.ts │ ├── styles.css │ └── index.html ├── .vscode │ ├── extensions.json │ ├── settings.json │ ├── launch.json │ └── tasks.json ├── tsconfig.app.json ├── tsconfig.spec.json ├── .editorconfig ├── .gitignore ├── tsconfig.json ├── README.md ├── package.json └── angular.json ├── faq.md ├── LICENSE ├── README.md └── links.md /apm-begin/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apm-final/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apm-begin/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeborahK/angular-rxjs-signals-fundamentals/HEAD/apm-begin/src/favicon.ico -------------------------------------------------------------------------------- /apm-final/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeborahK/angular-rxjs-signals-fundamentals/HEAD/apm-final/src/favicon.ico -------------------------------------------------------------------------------- /apm-begin/src/assets/images/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeborahK/angular-rxjs-signals-fundamentals/HEAD/apm-begin/src/assets/images/logo.jpg -------------------------------------------------------------------------------- /apm-final/src/assets/images/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeborahK/angular-rxjs-signals-fundamentals/HEAD/apm-final/src/assets/images/logo.jpg -------------------------------------------------------------------------------- /apm-begin/src/app/cart/cart.ts: -------------------------------------------------------------------------------- 1 | import { Product } from "../products/product"; 2 | 3 | export interface CartItem { 4 | product: Product; 5 | quantity: number; 6 | } 7 | -------------------------------------------------------------------------------- /apm-final/src/app/cart/cart.ts: -------------------------------------------------------------------------------- 1 | import { Product } from "../products/product"; 2 | 3 | export interface CartItem { 4 | product: Product; 5 | quantity: number; 6 | } 7 | -------------------------------------------------------------------------------- /apm-begin/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 3 | "recommendations": ["angular.ng-template"] 4 | } 5 | -------------------------------------------------------------------------------- /apm-begin/src/app/cart/cart.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from "@angular/core"; 2 | 3 | @Injectable({ 4 | providedIn: 'root' 5 | }) 6 | export class CartService { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /apm-final/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 3 | "recommendations": ["angular.ng-template"] 4 | } 5 | -------------------------------------------------------------------------------- /apm-begin/src/app/reviews/review.ts: -------------------------------------------------------------------------------- 1 | /* Defines a product review */ 2 | export interface Review { 3 | id: number; 4 | productId: number; 5 | userName: string; 6 | title: string; 7 | text: string; 8 | } 9 | -------------------------------------------------------------------------------- /apm-final/src/app/reviews/review.ts: -------------------------------------------------------------------------------- 1 | /* Defines a product review */ 2 | export interface Review { 3 | id: number; 4 | productId: number; 5 | userName: string; 6 | title: string; 7 | text: string; 8 | } 9 | -------------------------------------------------------------------------------- /apm-begin/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | .nav-link { 2 | font-size: large; 3 | cursor: pointer; 4 | } 5 | 6 | .navbar-light .navbar-nav .nav-link.active { 7 | color: #007ACC 8 | } 9 | 10 | .navbar-brand { 11 | margin-left: 10px; 12 | } -------------------------------------------------------------------------------- /apm-final/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | .nav-link { 2 | font-size: large; 3 | cursor: pointer; 4 | } 5 | 6 | .navbar-light .navbar-nav .nav-link.active { 7 | color: #007ACC 8 | } 9 | 10 | .navbar-brand { 11 | margin-left: 10px; 12 | } -------------------------------------------------------------------------------- /apm-begin/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.autoSave": "afterDelay", 3 | "html.format.wrapAttributes": "force-aligned", 4 | // "editor.quickSuggestionsDelay": 1000, 5 | //"editor.hover.enabled": false, 6 | // "editor.parameterHints": false, 7 | } -------------------------------------------------------------------------------- /apm-final/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.autoSave": "afterDelay", 3 | "html.format.wrapAttributes": "force-aligned", 4 | // "editor.quickSuggestionsDelay": 1000, 5 | //"editor.hover.enabled": false, 6 | // "editor.parameterHints": false, 7 | } -------------------------------------------------------------------------------- /apm-begin/src/app/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | templateUrl: './home.component.html', 5 | standalone: true 6 | }) 7 | export class HomeComponent { 8 | public pageTitle = 'Welcome'; 9 | } 10 | -------------------------------------------------------------------------------- /apm-final/src/app/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | templateUrl: './home.component.html', 5 | standalone: true 6 | }) 7 | export class HomeComponent { 8 | public pageTitle = 'Welcome'; 9 | } 10 | -------------------------------------------------------------------------------- /apm-begin/src/app/products/product.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | 3 | @Injectable({ 4 | providedIn: 'root' 5 | }) 6 | export class ProductService { 7 | // Just enough here for the code to compile 8 | private productsUrl = 'api/products'; 9 | 10 | } 11 | -------------------------------------------------------------------------------- /apm-begin/src/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrapApplication } from '@angular/platform-browser'; 2 | import { appConfig } from './app/app.config'; 3 | import { AppComponent } from './app/app.component'; 4 | 5 | bootstrapApplication(AppComponent, appConfig) 6 | .catch((err) => console.error(err)); 7 | -------------------------------------------------------------------------------- /apm-final/src/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrapApplication } from '@angular/platform-browser'; 2 | import { appConfig } from './app/app.config'; 3 | import { AppComponent } from './app/app.component'; 4 | 5 | bootstrapApplication(AppComponent, appConfig) 6 | .catch((err) => console.error(err)); 7 | -------------------------------------------------------------------------------- /apm-begin/src/app/utilities/page-not-found.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | template: ` 5 |
11 |
11 | | Review | 38 |Username | 39 |Text | 40 |
|---|---|---|
| {{ review.title }} | 45 |{{ review.userName }} | 46 |{{ review.text }} | 47 |
| Review | 38 |Username | 39 |Text | 40 |
|---|---|---|
| {{ review.title }} | 45 |{{ review.userName }} | 46 |{{ review.text }} | 47 |