错误TypeError:“ this.posts未定义”-在角度类型脚本类中

时间:2020-03-17 15:16:30

标签: javascript node.js angular typescript

我有一个如下所示的类型脚本类

@Injectable({ providedIn: "root" })
export class PostsService {
  private posts: Post[] = [];
  private postsUpdated = new Subject<Post[]>();

  constructor(private http: HttpClient) {}

  getPosts() {
    this.http
      .get<{ message: string; posts: Post[] }>(
        "http://localhost:3000/api/posts"
      )
      .subscribe(postData => {
        this.posts = postData.posts;
        this.postsUpdated.next([...this.posts]);
      });
  }

  getPostUpdateListener() {
    return this.postsUpdated.asObservable();
  }

}

在getPosts方法中,我向节点服务器发出http请求以获取数据并更新成员变量this.posts。但是我在浏览器控制台中遇到了如下错误-

错误TypeError:“ this.posts未定义”

我通过关于栈溢出的this问题发现,这与回调方法中 this 关键字的使用有关。我还阅读了我的代码,因为我使用了箭头功能,所以应该可以正常工作。我无法得到导致错误的原因。请帮忙。

1 个答案:

答案 0 :(得分:1)

您需要处理将从后端检索未定义数据的情况。

如果后端没有帖子,只需添加一个OR条件即可分配一个空白数组。

.subscribe(postData => {
        this.posts = postData.posts || [];
        this.postsUpdated.next([...this.posts]);
      });