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

如何使用AnalogJS渲染含2个及以上路由参数的路由?

AnalogJS 多参数路由定义方法

对于你需要的/:category/:topic这类多参数路由,AnalogJS的文件系统路由可以通过层级目录结构来实现,具体规则如下:

1. 文件结构对应路由

要匹配path: ':category/:topic'的路由,你需要在src/app/pages目录下创建以下结构:

src/
└── app/
    └── pages/
        └── [category]/
            └── [topic].page.ts

这样AnalogJS会自动生成路由/:category/:topic,与你提供的Angular路由配置完全对应。

如果是带前缀的多参数路由(比如products/:productId/:partId),则结构为:

src/
└── app/
    └── pages/
        └── products/
            └── [productId]/
                └── [partId].page.ts

2. 在组件中获取多参数

你可以使用AnalogJS提供的useRouteParams钩子来获取路由参数:

import { useRouteParams } from '@analogjs/router';

export default function TopicPage() {
  // 解构并指定参数类型
  const { category, topic } = useRouteParams<{ 
    category: string; 
    topic: string 
  }>();

  return (
    <div>
      <h2>当前分类:{category}</h2>
      <p>当前主题:{topic}</p>
    </div>
  );
}

3. 配置路由守卫、解析器和元数据

如果需要对应原路由中的resolve、canActivate和data配置,可以在页面组件文件中添加routeMeta导出:

import { RouteMeta } from '@analogjs/router';
import { topicGuard } from '../../guards/topic.guard';
import { topicResolver } from '../../resolvers/topic.resolver';
import { ROUTE_DATA } from '../../constants/route-data';

// 配置路由元数据
export const routeMeta: RouteMeta = {
  data: ROUTE_DATA,
  resolve: { topic: topicResolver },
  canActivate: [topicGuard],
};

// 组件代码...
export default function TopicPage() {
  // ...
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 00:00:00