Ошибка при передаче данных через сервис в угловых - PullRequest
0 голосов
/ 11 октября 2019

Я создал класс с именем Service.ts для передачи данных от одного компонента к другому в угловом формате 8:

import { Injectable } from '@angular/core';
import { Observable, Subject } from 'rxjs';

@Injectable()
export class MyService {
  myMethod$: Observable<any>;
  private myMethodSubject = new Subject<any>();

   constructor() {
      this.myMethod$ = this.myMethodSubject.asObservable();      
 }

myMethod(data: any) {
    console.log(data);
    this.myMethodSubject.next(data);
  }
}

вот компонент "отправителя":

 user: User = new User();

 constructor(private http: HttpClient, private myService: MyService, private activatedRoute: ActivatedRoute) { }

getCliente(){

    //do stuff
    this.myService.myMethod(this.user);
  }

и вот компонент получателя:

constructor(private http: HttpClient, private activatedRoute: ActivatedRoute, private myService: MyService) {
  this.myService.myMethod$.subscribe((data) => {
console.log("C",data);

});
}

проблема в том, что журнал ("C", данные) не работает, когда я загружаю компонент получателя, а только когда я перезагружаю компонент отправителя.

Вот мой маршрут:

const routes: Routes = [
{ path: 'sender', component: MainComponent },
{ path: 'receiver', component: PrimoPianoComponent }


 ];

1 Ответ

0 голосов
/ 11 октября 2019

Вы должны использовать BehaviorSubject (https://www.learnrxjs.io/subjects/behaviorsubject.html), который будет хранить самое последнее значение для следующего подписчика, чтобы получить в качестве первого значения в своем потоке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...