You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular点击跳转至其他组件页面问题咨询

问题修正与实现方案

首先你代码里存在语法错误:组件类中this.router.navigate(['/insights']);写在了ngOnInit方法外部,这会导致代码无法正常运行。以下是两种正确的实现方式:


方式一:模板中直接使用 routerLink(推荐)

直接给每个Firms列表项添加routerLink指令,点击即可跳转。修改你的HTML模板:

<div class="container">
  <div class="row">
    <div class="col-12">
      <div class="list-group">
        <!-- 将列表项改为a标签并绑定routerLink -->
        <a 
          class="list-group-item" 
          *ngFor="let firm of firms | async"
          [routerLink]="['/insights']"
        >
          {{ firm.hash }} - {{ firm.name }}
        </a>
        <div class="list-group-item">
          <a href="http://google.com">
            Create new
          </a>
        </div>
      </div>
    </div>
  </div>
</div>

如果不想改成<a>标签,也可以给原<div>绑定routerLink:

<div 
  class="list-group-item" 
  *ngFor="let firm of firms | async"
  [routerLink]="['/insights']"
>
  {{ firm.hash }} - {{ firm.name }}
</div>

方式二:通过组件类点击事件调用 router.navigate

第一步:修正组件类代码

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

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit {
  constructor(private router: Router) { }

  ngOnInit(): void {
    // 初始化时跳转的逻辑写在这里(如果需要)
  }

  // 定义点击跳转方法
  navigateToInsights(): void {
    this.router.navigate(['/insights']);
  }
}

第二步:修改模板绑定点击事件

<div class="container">
  <div class="row">
    <div class="col-12">
      <div class="list-group">
        <div 
          class="list-group-item" 
          *ngFor="let firm of firms | async"
          (click)="navigateToInsights()"
        >
          {{ firm.hash }} - {{ firm.name }}
        </div>
        <div class="list-group-item">
          <a href="http://google.com">
            Create new
          </a>
        </div>
      </div>
    </div>
  </div>
</div>

关键前提:确保路由配置正确

在app-routing.module.ts中必须配置/insights对应的路由规则,示例如下:

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { HomeComponent } from './home/home.component';
import { InsightsComponent } from './insights/insights.component'; // 导入目标组件

const routes: Routes = [
  { path: '', component: HomeComponent },
  { path: 'insights', component: InsightsComponent }, // 配置该路由
  { path: '**', redirectTo: '' } // 可选:404页面跳转规则
];

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

同时要保证app.component.html中存在<router-outlet></router-outlet>标签,用于渲染路由对应的组件。

内容的提问来源于stack exchange,提问作者new brain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 21:32:33