import { Injectable } from '@angular/core'; import { BehaviorSubject, Observable } from 'rxjs'; import { Task } from '../entity/task'; import { TaskPersistenceService } from './task-persistence.service'; @Injectable({ providedIn: 'root' }) export class TaskService { private _tasks: BehaviorSubject = new BehaviorSubject([]); constructor( private _taskPersistenceService: TaskPersistenceService ) { const tasks = this._taskPersistenceService.getAll() || []; this._tasks.next(tasks); } get tasks(): Observable { return this._tasks.asObservable(); } add(task: Task): void { const tasks = this._tasks.value; tasks.push(task); this._tasks.next(tasks); this._saveTasks(); } private _saveTasks(): void { this._taskPersistenceService.save(this._tasks.value); } refresh() { const tasks = this._taskPersistenceService.getAll(); this._tasks.next(tasks); } }