You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Angular 2跳转至upload页面报错:Cannot set property 'router' of undefined求助

解决Angular中"Cannot set property 'router' of undefined"错误的方案

嘿,我一眼就看出问题所在啦——你没有正确使用Angular的依赖注入机制来获取Router实例,而且代码里还漏掉了关键的组件装饰器,这才导致了这个错误。下面一步步帮你修复:

核心问题分析

  1. 你的组件缺少@Component装饰器,Angular根本识别不出这是一个组件,自然没法帮你注入Router服务;
  2. 你直接把Router类赋值给this.router,这完全是错误的用法——Router是一个服务,必须通过Angular的依赖注入来获取实例,而不是直接拿类本身赋值。

修复后的完整代码

import { Component, OnInit } from '@angular/core';
import { Router} from '@angular/router';

// 必须添加这个@Component装饰器,Angular才能识别这是一个组件
@Component({
  selector: 'app-game-landing', // 这里换成你实际的组件选择器
  templateUrl: './game-landing.component.html', // 对应你的组件模板路径
  styleUrls: ['./game-landing.component.css'] // 对应你的组件样式路径
})
export class GameLandingComponent implements OnInit{
  // 通过构造函数注入Router服务,Angular会自动帮你创建实例
  constructor(private router: Router) { }

  ngOnInit(){
    // 这里保留你原来的业务逻辑代码
    // some codes and logics...
    
    // 使用注入好的Router实例进行跳转
    this.router.navigateByUrl('/upload');
  }
}

额外需要确认的点

别忘了检查你的路由配置文件(一般是app-routing.module.ts),确保已经正确配置了/upload对应的路由:

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { UploadComponent } from './upload/upload.component'; // 导入Upload组件

const routes: Routes = [
  { path: 'upload', component: UploadComponent },
  // 其他路由配置...
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

这样修改之后,你应该就能顺利跳转到upload页面,不会再遇到那个undefined的错误啦!

内容的提问来源于stack exchange,提问作者Henry Lau

火山引擎 最新活动