我正在尝试从可观察对象返回的字符串数组中访问字符串。当我尝试使用以下代码从服务内部执行此操作时,一切顺利。 (getAll()
方法从graphQL查询返回数据)
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;
}
此代码返回一个可观察的字符串。当我在服务之外订阅此可观察项时,我不再可以在subscribe
方法内单独访问每个字符串。我有以下代码:
this.myService.getTags().subscribe(tags => {
console.log(tags)
console.log(tags.length)
this.tags = tags.forEach(tag => {
console.log(tag)
});
})
控制台中的标签是一个填充数组,但长度返回为0。单个标签也从不记录。
我想要的是访问数组中的每个字符串,以便可以将其转换为自定义对象。 我想念什么?