首页 文章

Angular 6在组件初始化时,没有来自订阅的数据,在第二个组件加载时没有,在每个下一个都很奇怪

提问于
浏览
0

在此链接中是代码与我的应用程序的一部分: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 回答

  • 0

    你的问题仍然很模糊 . 很大程度上取决于您构建应用程序的方式,哪些组件在哪些页面上,您的服务注入位置等等 .

    无论如何,我在stackblitz有一个有效的例子 . 我尝试命名方法和组件/服务,因此它们与您提到的类似 .

    如果这有帮助,请告诉我 .

相关问题