我根本无法理解这段代码是怎么回事,它来自我的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}`)
})
}
字符串
这些是日志
有没有人能解释一下发生了什么事,以及如何修复它?它似乎知道它有数据(第一个日志),但后来它就忘记了?
编辑:设法修复它,感谢帮助:)
2条答案
按热度按时间rm5edbpk1#
我建议尝试将数组“objectives”中的项目推入。我试图通过编写如下的纯JavaScript来复制这一点:
字符串
这看起来像预期的那样工作。你可以通过下面的示例application来参考整个代码。
让我知道如果这是你正在寻找的(如果是,请将其标记为您的答案),否则请与我们分享代码以进行全面审查。
q7solyqu2#
显然目标服务中出现了问题,getObjectives()没有正确更新BehaviorSubject,改变了.next(objectives)命令的顺序,现在它在发送数组之前等待来自DB的所有数据。我不知道为什么它能打印数组,但不能打印长度或第一项,但现在它已经修复了。