我想在两个组件之间传递一个对象。我创建了以下共享服务:
[PageService Component]
private messageSource = new BehaviorSubject([]);
currentMessage = this.messageSource.asObservable();
changeMessage(message) {
this.messageSource.next(message)
}
我已经在这两个组件中实现了它:
[COMPONENT WHEN I GET ON CLICK SONO DATAS]
constructor(private pageService: PageService, private _sanitizer: DomSanitizer) {}
...
onClickMethod(){
self.pageService.getCustomers(self.filters).toPromise().then(response => {
self.searchResults = response;
});
self.pageService.changeMessage(self.searchResults);
}
和
[Component where I need to see above datas]
ngOnInit() {
let self = this;
self.pageService.currentMessage.subscribe(message => self.searchResults = message);
console.log(self.searchResults);
}
现在...如果我将“changeMessage”方法放在方法onInit或costructor中的第一个组件中,我尝试传递一些数据,如[1,2,3](所以不是另一个api的响应它似乎工作......当我把它放在onClick方法并传递“self.searchResults”(响应)时,这不起作用......任何人都可以帮助我吗?
谢谢
答案 0 :(得分:0)
从这里开始
self.pageService.getCustomers(self.filters).toPromise().then(response => {
self.searchResults = response;
});
self.pageService.changeMessage(self.searchResults);
到此
self.pageService.getCustomers(self.filters).toPromise().then(response => {
self.searchResults = response;
self.pageService.changeMessage(self.searchResults);
});
因为您进行了HTTP调用(我假设),您应该等待调用结束。在你的代码中,它没有。