【发布时间】:2018-10-09 02:45:55
【问题描述】:
嗨,我是 Angular 2+ 的新手, 我试图在两个组件之间共享数据,但第二个组件没有从服务中检索数据,它得到一个空对象。
Service - 使用 rxjs BehaviorSubject 来保持对象
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class PostsService {
response: any = {};
private messageResponse = new BehaviorSubject(this.response);
currentResponse = this.messageResponse.asObservable();
constructor(private http: Http) { }
// Get all posts from the API
getAllPosts() {
return this.http.get('/api/posts')
.map(res => {
this.messageResponse.next(res.json());
return res.json();
}).catch(err => {
console.log('caught exception' + err.status);
return Observable.throw(err);
});
}
}
组件 1 - 帖子。该组件第一次调用获取数据,取回没问题,更新messageResponse。
export class PostsComponent implements OnInit {
// instantiate posts to an empty array
posts: any = [];
constructor(private postsService: PostsService) { }
ngOnInit() {
// Retrieve posts from the API
this.postsService.getAllPosts().subscribe(posts => {
this.posts = posts;
});
}
}
组件 2 - 帖子 2 - 此组件获取 currentResponse 但是日志显示的是一个空数组。
export class Posts2Component implements OnInit {
posts: any = [];
constructor(private postsService: PostsService) { }
ngOnInit() {
this.postsService.currentResponse.subscribe(posts => {
this.posts = posts;
console.log(this.posts);
});
}
}
每当我查看 Posts2 组件时,我都看不到任何 currentResponse 数据。我不确定我在这里做错了什么?
谢谢
【问题讨论】:
标签: angular rxjs observable angular-services behaviorsubject