在此链接中是代码与我的应用程序的一部分:stackblitz.com/edit/angular-wfpjb8 . 这个节目,我的问题是什么 . (注意控制台中的console.log)
SHORT DESCRIPTION: 在Angular 6中我有组件搜索,我有输入 . 当我按下ENTER时,从httpService服务中的DB获取一些数据:
keyDownFunction(event){
if(event.keyCode == 13) {
this.httpService.searchPoint().subscribe(
points => {
this.mapService.setSearchPoints(points);
this.router.navigate(['/home/search/']);
});
}
}
从后端我收到一些格式的数据:[{},{},{},{} ...]这个数据我通过mapService发送到组件ResultComponent,我想在那里显示这些数据 . Map 服务:
setSearchPoints(points){
this.pointList.next(points);
}
getSearchPoints(){
return this.pointList.asObservable();
}
组件ResultsComponent,我从服务订阅数据并希望显示数据 .
export class ResultsSearchComponent {
points;
constructor(private mapService: MapService) {
this.mapService.getSearchPoints().subscribe((points) => {
console.log('1: ', points);
this.points = points;
});
console.log('2: ', points);
}
PROBLEM:
-
当我第一次从后端设置数据时,console.log 1没有写入't execute (so my data from backend won'并且console.log 2执行undefined - 我想立即查看来自DB的数据
-
当我第二次从后端设置数据时(当组件ResultsComponent存在时),console.log 1从后端写入正确的数据,并且console.log 2不执行 . (一切正常)
-
当我关闭此组件并再次从后端设置数据时,console.log 1写入正确的数据(但此执行来自最后一个),但是2不执行 .
-
当我再次关闭这个组件时,console.log 1写两次,当我再关闭一次时执行三次,四次,五次等等......
我真的不明白为什么它会这样,因为在我看来,它应该正常工作请告诉我,我做错了什么 .
1 回答
你的问题仍然很模糊 . 很大程度上取决于您构建应用程序的方式,哪些组件在哪些页面上,您的服务注入位置等等 .
无论如何,我在stackblitz有一个有效的例子 . 我尝试命名方法和组件/服务,因此它们与您提到的类似 .
如果这有帮助,请告诉我 .