Как передать объект в другой компонент, при изменении маршрута данные очищаются - PullRequest
0 голосов
/ 17 марта 2020

Я хочу передать объект другому компоненту. Ниже мой подход. Но данные очищаются при изменении маршрута. Есть ли какое-то решение для этого или есть другое решение.

В компоненте 1:

this.myService.setData(this.myData);
this.router.navigateByUrl('component2');

В эксплуатации:

private myDataSubj = new Subject<MyData>();
setData(myData) {
    this.myDataSubj.next(myData);
}
getData(): Observable<MyData> {
    return this.myDataSubj.asObservable();
}

В компоненте 2 : в ngOninit

this.myService.getData().subscribe(data => {
     this.myData = data;
     console.log(this.myData); // Returning Undefined. 
  })

Я что-то упустил?

1 Ответ

0 голосов
/ 17 марта 2020

Пожалуйста, прочитайте документацию angular или проведите исследование, прежде чем спрашивать. Пожалуйста, прочитайте о Angular взаимодействии компонентов с использованием сервиса

На высоком уровне, что вы хотите ... [см. Ниже]

Обновление

Для поддержки в Angular 5

Модуль

providers: [SharedService]
exports: [SharedService]

Сервис

import { Injectable } from '@angular/core';
import { Subject }    from 'rxjs';
import { SharedService } from '........<module path>...';

@Injectable()
export class SharedService {

  // Observable string sources
  private myDataSubj = new Subject<MyData>();

  // Observable string streams
  public myDataSubj$ = this.myDataSubj.asObservable();

  // Service method
  sharedData(myData: MyData) {
    this.myDataSubj.next(myData);
    this.myDataSubj.complete();
  }

}

Компонент-1

this.sharedService.sharedData(data);

Компонент-2

this.sharedService.myDataSubj$.subscribe(data => {
    this.myData= data;
    console.log(this.myData);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...