Угловой SharedService с BehaviorSubject потерял данные при обновлении - PullRequest
0 голосов
/ 28 августа 2018

я создал sharedService, он работает отлично, я могу обмениваться данными из одного компонента в другой (это оба нерелевантные компоненты в другом модуле).

  • Передача данных выглядит следующим образом:

AdminDashboard.Component (обновить значение) ===> conference.component (получить новое обновленное значение)

проблема: когда я обновляю свой компонент conference.com, я терял значение

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 / dashboard)

on Button Click вызывается метод 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 / конференция) Здесь я держу значение в сообщении и привязываю к интерфейсу.

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 Ответ

0 голосов
/ 29 августа 2018

Это ожидается, поскольку при «переключении» компонентов они уничтожаются. Вы можете быстро обойти эту проблему, добавив переменные состояния в ваш сервис.

Лично я призываю вас воспользоваться библиотекой штата, например, ngRx https://github.com/ngrx/platform

...