Files
demo-promises-observables/src/app/observables-example/simple-observable-exemple/simple-observable-exemple.component.ts
2023-02-21 14:14:07 +01:00

39 lines
970 B
TypeScript

import {Component} from '@angular/core';
import {BehaviorSubject, Observable, Subject} from "rxjs";
import {Car} from "../../core/model/car";
@Component({
selector: 'app-simple-observable-exemple',
templateUrl: './simple-observable-exemple.component.html',
styleUrls: ['./simple-observable-exemple.component.scss']
})
export class SimpleObservableExempleComponent {
private carsSubject: BehaviorSubject<Car[]> = new BehaviorSubject<Car[]>([]);
private cars: Car[] = [];
get cars$(): Observable<Car[]> {
return this.carsSubject.asObservable();
}
addNewCar(): void {
const newCar: Car = {
id: `${Math.random() * 100}`,
brand: 'Toyota',
model: 'Yaris',
power: 12,
numberOfSeats: 5
}
this.cars.push(newCar);
this.emitCarsUpdateEvent();
}
removeCars(): void {
this.cars = [];
this.emitCarsUpdateEvent();
}
private emitCarsUpdateEvent(): void {
this.carsSubject.next(this.cars);
}
}