Я пытаюсь получить доступ к строкам из массива строк, которые возвращаются из наблюдаемой. Когда я пытаюсь сделать это изнутри моего сервиса с помощью следующего кода, все идет хорошо. (метод 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. Отдельные теги также никогда не регистрируются.
Мне нужен доступ к каждой строке в массиве, чтобы я мог преобразовать ее в пользовательский объект. Чего мне не хватает?