Angular 5/6配置代理后订阅操作出现undefined错误排查
问题分析与解决方案
其实你遇到的问题和代理配置、API接口本身都没关系——毕竟直接在浏览器访问http://localhost:4200/incidents/all能正常拿到响应,说明代理和后端服务都是正常工作的。
真正的报错根源是**this.subscriptions变量没有被初始化为数组**,导致你调用push()方法时触发了Cannot read property 'push' of undefined的错误。
修复步骤
- 在你的组件类中,先把
subscriptions初始化为空数组:
// 在组件类的属性定义区域添加 private subscriptions: Subscription[] = [];
或者在组件的ngOnInit钩子中初始化:
ngOnInit(): void { this.subscriptions = []; // 后续的订阅逻辑... }
- 别忘了导入
Subscription类型:
import { Subscription } from 'rxjs';
额外最佳实践
为了避免内存泄漏,建议在组件销毁时取消所有订阅:
ngOnDestroy(): void { this.subscriptions.forEach(sub => sub.unsubscribe()); }
这样修改后,你的订阅代码就能正常执行,API返回的结果也能被正确处理了。
内容的提问来源于stack exchange,提问作者mixtou
相关产品推荐
相关产品推荐

