在角度通过服务传递数据时出错

时间:2019-10-10 21:32:28

标签: angular routing

我创建了一个名为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);

});
}

问题在于,当我加载接收方组件时,log(“ C”,data)无效,而仅当我重新加载发送方组件时,

这是我的路线:

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


 ];

1 个答案:

答案 0 :(得分:0)

您应该使用BehaviorSubjecthttps://www.learnrxjs.io/subjects/behaviorsubject.html),它将保留最新的值,以便下一个订阅者在其流中获得第一个值。