diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 3aa149b..b1f4940 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -12,6 +12,8 @@ import { BackToHomeComponent } from './back-to-home/back-to-home.component';
import {MatIconModule} from "@angular/material/icon";
import { ObservablesExampleComponent } from './observables-example/observables-example.component';
import { StateManagementExampleComponent } from './state-management-example/state-management-example.component';
+import {RestServicesModule} from "./core/rest-services/rest-services.module";
+import { CarComponent } from './core/components/car/car.component';
@NgModule({
declarations: [
@@ -21,14 +23,16 @@ import { StateManagementExampleComponent } from './state-management-example/stat
HomeComponent,
BackToHomeComponent,
ObservablesExampleComponent,
- StateManagementExampleComponent
+ StateManagementExampleComponent,
+ CarComponent
],
imports: [
BrowserModule,
AppRoutingModule,
BrowserAnimationsModule,
MatButtonModule,
- MatIconModule
+ MatIconModule,
+ RestServicesModule
],
providers: [],
bootstrap: [AppComponent]
diff --git a/src/app/core/components/car/car.component.html b/src/app/core/components/car/car.component.html
new file mode 100644
index 0000000..414682d
--- /dev/null
+++ b/src/app/core/components/car/car.component.html
@@ -0,0 +1,14 @@
+
+
{{car?.model}}
+
+ -
+ Brand : {{car?.brand}}
+
+ -
+ Power : {{car?.power}} cv
+
+ -
+ {{car?.numberOfSeats}} seats
+
+
+
\ No newline at end of file
diff --git a/src/app/core/components/car/car.component.scss b/src/app/core/components/car/car.component.scss
new file mode 100644
index 0000000..1385010
--- /dev/null
+++ b/src/app/core/components/car/car.component.scss
@@ -0,0 +1,18 @@
+.component {
+ display: flex;
+ flex-direction: column;
+ border: 1px solid #ccc;
+ box-shadow: 0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f;
+ border-radius: .5rem;
+ width: 10rem;
+ padding: 1rem;
+
+ h1 {
+ display: flex;
+ justify-content: center;
+ }
+
+ ul {
+ margin: 0;
+ }
+}
\ No newline at end of file
diff --git a/src/app/core/components/car/car.component.spec.ts b/src/app/core/components/car/car.component.spec.ts
new file mode 100644
index 0000000..6c797a7
--- /dev/null
+++ b/src/app/core/components/car/car.component.spec.ts
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { CarComponent } from './car.component';
+
+describe('CarComponent', () => {
+ let component: CarComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ CarComponent ]
+ })
+ .compileComponents();
+
+ fixture = TestBed.createComponent(CarComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/core/components/car/car.component.ts b/src/app/core/components/car/car.component.ts
new file mode 100644
index 0000000..b364c93
--- /dev/null
+++ b/src/app/core/components/car/car.component.ts
@@ -0,0 +1,11 @@
+import {Component, Input} from '@angular/core';
+import {Car} from "../../model/car";
+
+@Component({
+ selector: 'app-car',
+ templateUrl: './car.component.html',
+ styleUrls: ['./car.component.scss']
+})
+export class CarComponent {
+ @Input("value") car?: Car;
+}
diff --git a/src/app/core/model/car.ts b/src/app/core/model/car.ts
new file mode 100644
index 0000000..1faa5cb
--- /dev/null
+++ b/src/app/core/model/car.ts
@@ -0,0 +1,7 @@
+export interface Car {
+ id: string;
+ brand: string;
+ model: string;
+ power: number;
+ numberOfSeats: number;
+}
\ No newline at end of file
diff --git a/src/app/core/rest-services/car.rest-service.ts b/src/app/core/rest-services/car.rest-service.ts
new file mode 100644
index 0000000..0cd0897
--- /dev/null
+++ b/src/app/core/rest-services/car.rest-service.ts
@@ -0,0 +1,18 @@
+import { Injectable } from '@angular/core';
+import {HttpClient} from "@angular/common/http";
+import {Car} from "../model/car";
+import {toPromise} from "../utils/promises.utils";
+
+@Injectable({
+ providedIn: 'root'
+})
+export class CarRestService {
+
+ constructor(
+ private http: HttpClient
+ ) { }
+
+ findById(carId: string): Promise {
+ return toPromise(this.http.get(`/cars/${carId}`));
+ }
+}
diff --git a/src/app/core/rest-services/rest-services.module.ts b/src/app/core/rest-services/rest-services.module.ts
new file mode 100644
index 0000000..6fb0bde
--- /dev/null
+++ b/src/app/core/rest-services/rest-services.module.ts
@@ -0,0 +1,12 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+
+
+
+@NgModule({
+ declarations: [],
+ imports: [
+ CommonModule
+ ]
+})
+export class RestServicesModule { }
diff --git a/src/app/core/utils/promises.utils.ts b/src/app/core/utils/promises.utils.ts
new file mode 100644
index 0000000..79bb620
--- /dev/null
+++ b/src/app/core/utils/promises.utils.ts
@@ -0,0 +1,5 @@
+import {firstValueFrom, Observable} from "rxjs";
+
+export function toPromise(observable: Observable): Promise {
+ return firstValueFrom(observable);
+}
\ No newline at end of file
diff --git a/src/app/promises-example/promises-example.component.html b/src/app/promises-example/promises-example.component.html
index 944ca19..491046a 100644
--- a/src/app/promises-example/promises-example.component.html
+++ b/src/app/promises-example/promises-example.component.html
@@ -1 +1,4 @@
-promises-example works!
+
\ No newline at end of file
diff --git a/src/app/promises-example/promises-example.component.ts b/src/app/promises-example/promises-example.component.ts
index fcfcf50..fdc78b7 100644
--- a/src/app/promises-example/promises-example.component.ts
+++ b/src/app/promises-example/promises-example.component.ts
@@ -1,4 +1,5 @@
import { Component } from '@angular/core';
+import {Car} from "../core/model/car";
@Component({
selector: 'app-promises-example',
@@ -6,5 +7,11 @@ import { Component } from '@angular/core';
styleUrls: ['./promises-example.component.scss']
})
export class PromisesExampleComponent {
-
+ car?: Car = {
+ id: '1234567890',
+ brand: 'Toyota',
+ model: 'Yaris',
+ power: 12,
+ numberOfSeats: 5
+ };
}