Угловой SharedService с BehaviorSubject потерял данные при обновлении
Я создал sharedService, он работает отлично, я могу обмениваться данными из одного компонента в другой (это оба нерелевантный компонент в другом модуле).
- Передача данных осуществляется следующим образом:
AdminDashboard.Component (обновить значение) ===> conference.component (получить новое обновленное значение)
проблема: когда я обновляю свой conference.component, я терял значение
EventService.ts
import { Injectable } from '@angular/core';
import { Observable, BehaviorSubject } from 'rxjs';
import { importExpr } from '@angular/compiler/src/output/output_ast';
import {Events} from '../models/event.model'
@Injectable()
export class EventService {
private dataSource = new BehaviorSubject(null);
sendMessage(data) {
this.dataSource.next(data);
}
getMessage(): Observable<any> {
return this.dataSource.asObservable();
}
}
dashboard.component (URL / панель инструментов)
при нажатии кнопки вызывается метод msg(), который обновляет значение BehaviourSubjectvalue.
import { Component, OnInit} from '@angular/core';
import { NgForm } from '@angular/forms';
import { EventService } from '../../shared/sharedServies/eventService.service';
export class AdminDashboardComponent implements OnInit {
constructor( private testEventService: EventService){ }
msg() {
debugger
this.testEventService.sendMessage('Message from Home Component to App
Component!');
}
}
conference.component (url / conference) Здесь я сохраняю значение в сообщении и привязываюсь к пользовательскому интерфейсу.
import { Component, OnInit } from '@angular/core';
import { EventService } from'../../shared/sharedServies/eventService.service';
import { Subscription } from 'rxjs/Subscription';
export class ViewconferenceComponent implements OnInit {
message: any;
constructor(private EventService: EventService) {
this.subscription = this.EventService.getMessage().subscribe(message => {
console.log(message)
this.message = message;
});
}
}
Вопрос:
когда я получаю данные на странице / конференции, при этом, когда я обновляю, значение удерживаемой службы теряется, я не понимаю, что это происходит.
Также мне нужно добавить JSON к sharedService, как это будет достигнуто?
1 ответ
Это ожидается, так как при "переключении" компонентов они уничтожаются. Вы можете быстро обойти эту проблему, добавив переменные состояния в ваш сервис.
Лично я призываю вас воспользоваться библиотекой состояний, например ngRx https://github.com/ngrx/platform