Angular 尝试在服务外部使用forEach()或map()时,subscribe()内部的数组为空,但在服务中已填充
我试图从一个字符串数组中访问字符串,这个字符串数组是从一个可观察对象返回的。当我尝试使用下面的代码从我的服务内部执行此操作时,一切都很顺利。(方法从graphQL查询返回数据) 控制台中的标记是一个填充数组,但长度返回为0。单个标签也不会被记录 我想要的是访问数组中的每个字符串,以便将其转换为自定义对象。Angular 尝试在服务外部使用forEach()或map()时,subscribe()内部的数组为空,但在服务中已填充,angular,graphql,subscribe,Angular,Graphql,Subscribe,我试图从一个字符串数组中访问字符串,这个字符串数组是从一个可观察对象返回的。当我尝试使用下面的代码从我的服务内部执行此操作时,一切都很顺利。(方法从graphQL查询返回数据) 控制台中的标记是一个填充数组,但长度返回为0。单个标签也不会被记录 我想要的是访问数组中的每个字符串,以便将其转换为自定义对象。 我遗漏了什么?此代码返回一个可观察的字符串:不,它不返回任何内容。如果它有一个return语句,它将返回一个订阅,而不是一个可观察的订阅。还不清楚该代码是myService.getTags()
我遗漏了什么?此代码返回一个可观察的字符串:不,它不返回任何内容。如果它有一个return语句,它将返回一个订阅,而不是一个可观察的订阅。还不清楚该代码是myService.getTags()还是其他代码,以及myService.getTags()方法的实际功能。发布相关的编译代码。抱歉,我好像错过了getTags函数的一部分。我添加了它。请提供一个关于的工作示例。
private tags: Observable<any>;
getTags() : Observable<string[]> {
if (!this.tags)
{
var tagsSource = new BehaviorSubject<string[]>(null);
this.tags = tagsSource.asObservable();
var tags : string[] = [];
this.getAll().subscribe(result => {
result.data.all.forEach(item =>{
if(item.tags !== null && item.tags !== undefined)
{
item.tags.forEach(tag => {
if(!tag.includes("["))
{
if(!tags.includes(tag))
{
tags.push(tag);
}
}
});
}
});
})
tagsSource.next(tags);
}
return this.tags;
}
this.myService.getTags().subscribe(tags => {
console.log(tags)
console.log(tags.length)
this.tags = tags.forEach(tag => {
console.log(tag)
});
})