Angular 如何将对象传递给其他组件,正在清除路由更改数据

Angular 如何将对象传递给其他组件,正在清除路由更改数据,angular,typescript,Angular,Typescript,我想将一个对象传递给另一个组件。下面是我的方法。但路线改变后,数据被清除。是否有任何修复方法或其他解决方案 在组件1中: this.myService.setData(this.myData); this.router.navigateByUrl('component2'); private myDataSubj = new Subject<MyData>(); setData(myData) { this.myDataSubj.next(myData); } getDat

我想将一个对象传递给另一个组件。下面是我的方法。但路线改变后,数据被清除。是否有任何修复方法或其他解决方案

在组件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();
}
在用:

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部分
如何在服务中声明
类(是否使用
@可注入的
?您是否向
NgModule
提供商添加了
服务中的
?启动两个组件的顺序是什么?从您提供的代码来看,它是不清楚的…您所要求的内容没有问题。。我想要的是我想要解析数据到其他组件,数据应该在那里,即使你改变了路线,如果你知道更好的方法,请建议。服务是单例的吗?您是否在服务中的“根”
中提供了
?您只需在服务中保留一个全局变量,并在component@SheenaSingla你能为这个写一个代码吗?我的角度版本是5,在root中提供的版本不起作用。这不是有效的借口@swamyredy@swamyredy。作为一名工程师,你必须知道如何处理多个版本。只需删除
providedIn
属性并将其插入模块中的提供程序中,然后从那里导出并导入组件即可。@swamyredy,我已更新了答案。请看。链接指向angular 5版本。尽管如此,在组件2中subscribe并没有进入内部。
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();
  }

}
this.sharedService.sharedData(data);
this.sharedService.myDataSubj$.subscribe(data => {
    this.myData= data;
    console.log(this.myData);
});