如何将数据存储为主题 rxjs
How to get data stored as subject rxjs
我正在努力显示点击事件的详细信息。我已将所有事件存储在一个数组中。
当用户点击事件时,它的 id 被传递,检查数组内部并将结果传递给服务。
showDetail(id){
let obj = this.events;
let newArr = Object.values(obj);
let result = newArr.filter(function(el) {
return el["id"] == id;
});
this.articleService.sendMessage(result);
let url = `/article/${id}`;
this.router.navigate([url]);
}
服务
private detailSubject = new Subject<any>();
sendMessage(formData: any) {
this.detailSubject.next({formData});
}
getMessage(): Observable<any> {
return this.detailSubject.asObservable();
}
现在在我的 article/id 页面中。
我无法检索这个传递的数组。
我有以下代码
ngOnInit() {
this.articleService.getMessage().subscribe(
res => {
this.loadArticleDetail(res["formData"]);
},
error => {
console.log("Error loading data");
}
);
}
this.articleService.sendMessage(result); // <-- Subject.next()
let url = `/article/${id}`;
this.router.navigate([url]); // <-- Subject.subscribe() after Subject.next(), so value already emitted
您已经添加了 BehaviorSubject
标签。所以使用它。此外,getMessage(): Observable<any> {
除了 returns Observable 之外什么都不做。感觉多余:
private detailSubject = new BehaviorSubject<any>(null);
message$ = this.detailSubject.asObservable();
sendMessage(formData: any) {
this.detailSubject.next({formData});
}
和
ngOnInit() {
this.articleService.message$.subscribe(...
我正在努力显示点击事件的详细信息。我已将所有事件存储在一个数组中。
当用户点击事件时,它的 id 被传递,检查数组内部并将结果传递给服务。
showDetail(id){
let obj = this.events;
let newArr = Object.values(obj);
let result = newArr.filter(function(el) {
return el["id"] == id;
});
this.articleService.sendMessage(result);
let url = `/article/${id}`;
this.router.navigate([url]);
}
服务
private detailSubject = new Subject<any>();
sendMessage(formData: any) {
this.detailSubject.next({formData});
}
getMessage(): Observable<any> {
return this.detailSubject.asObservable();
}
现在在我的 article/id 页面中。 我无法检索这个传递的数组。
我有以下代码
ngOnInit() {
this.articleService.getMessage().subscribe(
res => {
this.loadArticleDetail(res["formData"]);
},
error => {
console.log("Error loading data");
}
);
}
this.articleService.sendMessage(result); // <-- Subject.next()
let url = `/article/${id}`;
this.router.navigate([url]); // <-- Subject.subscribe() after Subject.next(), so value already emitted
您已经添加了 BehaviorSubject
标签。所以使用它。此外,getMessage(): Observable<any> {
除了 returns Observable 之外什么都不做。感觉多余:
private detailSubject = new BehaviorSubject<any>(null);
message$ = this.detailSubject.asObservable();
sendMessage(formData: any) {
this.detailSubject.next({formData});
}
和
ngOnInit() {
this.articleService.message$.subscribe(...