我创建了一个名为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 }
];
答案 0 :(得分:0)
您应该使用BehaviorSubject
(https://www.learnrxjs.io/subjects/behaviorsubject.html),它将保留最新的值,以便下一个订阅者在其流中获得第一个值。