Ionic 数组有一个对象,但没有长度或数据

k2fxgqgv  于 2023-11-15  发布在  Ionic
关注(0)|答案(2)|浏览(139)

我根本无法理解这段代码是怎么回事,它来自我的Angular项目,基本上我有一个目标列表,但它在订阅中表现得非常奇怪。
下面是ngOnInit方法:

ngOnInit() {
        this.objectivesService.getObjectives();
        this.objectivesSub = this.objectivesService._loadedObjectives.subscribe(objectives => {
            this.objectives = objectives;
            console.log(this.objectives)
            console.log(`First Object: ${this.objectives[0]}`)
            console.log(`Length: ${this.objectives.length}`)
        })
    }

字符串
这些是日志

有没有人能解释一下发生了什么事,以及如何修复它?它似乎知道它有数据(第一个日志),但后来它就忘记了?
编辑:设法修复它,感谢帮助:)

rm5edbpk

rm5edbpk1#

我建议尝试将数组“objectives”中的项目推入。我试图通过编写如下的纯JavaScript来复制这一点:

name: 'test',
   description: 'testDescription',
   id:'testId',
   notes:'notes'
  };
  objectives:any[]=[];
  ngOnInit(){
    this.objectives.push(this.data);
    console.log(this.objectives)
            console.log(`First Object: ${this.objectives[0]}`)
            console.log(`Length: ${this.objectives.length}`)

  }

字符串
这看起来像预期的那样工作。你可以通过下面的示例application来参考整个代码。
让我知道如果这是你正在寻找的(如果是,请将其标记为您的答案),否则请与我们分享代码以进行全面审查。

q7solyqu

q7solyqu2#

显然目标服务中出现了问题,getObjectives()没有正确更新BehaviorSubject,改变了.next(objectives)命令的顺序,现在它在发送数组之前等待来自DB的所有数据。我不知道为什么它能打印数组,但不能打印长度或第一项,但现在它已经修复了。

相关问题