调用location.back()时触发TypeError: Cannot read property 'back' of undefined错误
解决Angular中调用
location.back()出现Cannot read property 'back' of undefined的问题 嘿,我来帮你搞定这个报错!这个问题通常是因为你没有正确使用Angular提供的路由导航服务,或者直接操作window.location时出现了上下文问题。下面给你两种靠谱的解决方案:
方案一:使用Angular官方推荐的Location服务(更规范)
Angular内置了Location服务来处理页面导航回退,这比直接操作window对象更符合框架规范,也更便于测试。
- 在组件中导入并注入
Location服务
在你的component.ts文件顶部导入服务,然后在构造函数中注入:
import { Component } from '@angular/core'; import { Location } from '@angular/common'; // 导入Location服务 @Component({ selector: 'app-your-component', templateUrl: './your-component.component.html', styleUrls: ['./your-component.component.css'] }) export class YourComponentComponent { // 构造函数中注入Location constructor(private location: Location) { } // 保存按钮的点击处理函数 onSave() { // 这里先写你的保存逻辑,比如调用service的保存方法 // this.yourService.saveData().subscribe(...); // 调用back方法返回上一页 this.location.back(); } }
- 在模板中绑定点击事件
在component.html里给保存按钮绑定点击事件:
<button (click)="onSave()">保存</button>
方案二:直接使用window.location(若你更偏好这种方式)
如果你不想用Angular的服务,确保直接调用window.location.back(),而不是this.location(因为this.location未定义才会报错):
修改你的点击处理函数:
onSave() { // 保存逻辑... window.location.back(); // 直接使用window对象的location }
为什么会出现这个错误?
你看到的TypeError: Cannot read property 'back' of undefined,大概率是因为你写了this.location.back(),但this.location既没有通过Angular注入服务,也不是全局的window.location,导致它是undefined,自然调用不了back方法。
内容的提问来源于stack exchange,提问作者Shravi
相关产品推荐
相关产品推荐

