Angular 尝试在服务外部使用forEach()或map()时,subscribe()内部的数组为空,但在服务中已填充

Angular 尝试在服务外部使用forEach()或map()时,subscribe()内部的数组为空,但在服务中已填充,angular,graphql,subscribe,Angular,Graphql,Subscribe,我试图从一个字符串数组中访问字符串,这个字符串数组是从一个可观察对象返回的。当我尝试使用下面的代码从我的服务内部执行此操作时,一切都很顺利。(方法从graphQL查询返回数据) 控制台中的标记是一个填充数组,但长度返回为0。单个标签也不会被记录 我想要的是访问数组中的每个字符串,以便将其转换为自定义对象。 我遗漏了什么?此代码返回一个可观察的字符串:不,它不返回任何内容。如果它有一个return语句,它将返回一个订阅,而不是一个可观察的订阅。还不清楚该代码是myService.getTags()

我试图从一个字符串数组中访问字符串,这个字符串数组是从一个可观察对象返回的。当我尝试使用下面的代码从我的服务内部执行此操作时,一切都很顺利。(方法从graphQL查询返回数据)

控制台中的标记是一个填充数组,但长度返回为0。单个标签也不会被记录

我想要的是访问数组中的每个字符串,以便将其转换为自定义对象。
我遗漏了什么?

此代码返回一个可观察的字符串:不,它不返回任何内容。如果它有一个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)
  });
})