我在angular中有一个类型脚本类,如下
@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。但我在浏览器控制台中收到一个错误,如下所示-
错误类型错误:"this.posts is undefined">
通过stackoverflow上的这个问题,我发现这与回调方法中this关键字的使用有关。此外,我读到我的代码应该工作良好,因为我使用了箭头函数。我不知道是什么导致了这个错误。请帮忙。
您需要处理从后端检索未定义数据的情况。
如果后端没有post,只需添加OR条件即可分配一个空白数组。
.subscribe(postData => {
this.posts = postData.posts || [];
this.postsUpdated.next([...this.posts]);
});