diff --git a/demo/src/app/Product.ts b/demo/src/app/Product.ts new file mode 100644 index 0000000..423ef54 --- /dev/null +++ b/demo/src/app/Product.ts @@ -0,0 +1,5 @@ +export interface Product { + id: number; + name: string; + stock: number; // Anzahl an Lager +} diff --git a/demo/src/app/app.routes.ts b/demo/src/app/app.routes.ts index 8c823e4..683e11f 100644 --- a/demo/src/app/app.routes.ts +++ b/demo/src/app/app.routes.ts @@ -1,8 +1,10 @@ import { Routes } from '@angular/router'; import { StudentForm } from './student-form/student-form'; import { StudentFormReactive } from './student-form-reactive/student-form-reactive'; +import { OrderComponent } from './order-component/order-component'; export const routes: Routes = [ { path: 'student', component: StudentForm }, - { path: 'student-reactive', component: StudentFormReactive } + { path: 'student-reactive', component: StudentFormReactive }, + { path: 'order', component: OrderComponent }, ]; diff --git a/demo/src/app/order-component/order-component.css b/demo/src/app/order-component/order-component.css new file mode 100644 index 0000000..e69de29 diff --git a/demo/src/app/order-component/order-component.html b/demo/src/app/order-component/order-component.html new file mode 100644 index 0000000..c8ec570 --- /dev/null +++ b/demo/src/app/order-component/order-component.html @@ -0,0 +1,25 @@ + + +
+ + + +
+ + + + +
+ + +
diff --git a/demo/src/app/order-component/order-component.spec.ts b/demo/src/app/order-component/order-component.spec.ts new file mode 100644 index 0000000..72d0a86 --- /dev/null +++ b/demo/src/app/order-component/order-component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { OrderComponent } from './order-component'; + +describe('OrderComponent', () => { + let component: OrderComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [OrderComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(OrderComponent); + component = fixture.componentInstance; + await fixture.whenStable(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/demo/src/app/order-component/order-component.ts b/demo/src/app/order-component/order-component.ts new file mode 100644 index 0000000..fc14e33 --- /dev/null +++ b/demo/src/app/order-component/order-component.ts @@ -0,0 +1,45 @@ +import { HttpClient } from '@angular/common/http'; +import { Component } from '@angular/core'; +import { Product } from '../Product'; +import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms'; + +const API_URL = 'https://api.lager.de'; + +@Component({ + selector: 'app-order-component', + imports: [ReactiveFormsModule], + templateUrl: './order-component.html', + styleUrl: './order-component.css', +}) +export class OrderComponent { + products: Product[]; + orderForm: FormGroup = null!; + + constructor(private readonly httpClient: HttpClient) { + this.products = []; + } + + ngOnInit() { + this.orderForm = new FormGroup({ + productName: new FormControl('', Validators.required), + amount: new FormControl(1), + }); + + this.loadProducts(); + } + + loadProducts() { + this.httpClient.get(API_URL + '/products').subscribe((products) => { + this.products = products; + }); + } + + submitOrder() { + console.log('Sende Bestellung...'); + const name = this.orderForm?.value.productName; + const body = this.orderForm?.value; + this.httpClient.post(API_URL + '/orders/' + name, body).subscribe((response) => { + console.log('Erfolg', response); + }); + } +}