我有一个如下所示的类型脚本类
@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 关键字的使用有关。我还阅读了我的代码,因为我使用了箭头功能,所以应该可以正常工作。我无法得到导致错误的原因。请帮忙。
答案 0 :(得分:1)
您需要处理将从后端检索未定义数据的情况。
如果后端没有帖子,只需添加一个OR条件即可分配一个空白数组。
.subscribe(postData => {
this.posts = postData.posts || [];
this.postsUpdated.next([...this.posts]);
});