javascript - 在 Angular 8 中设置动态路由

标签 javascript angular typescript angular8

我在 Angular 8 中设置路由时遇到一些问题。 我这样做是这样的:

'company/:id/activity'
'company/:id/contacts'

在activatedRoute中没有获取任何参数:

this.activateRoute.params
            .subscribe(param => console.log(param) )

有什么运气可以解决这个问题吗?

主路由文件:

{
                path: 'company/:id',
                children: [
                    {
                        path: '',
                        loadChildren: () => import('@app/features/company-view/company-view.module').then(m => m.CompanyViewModule)
                    }
                ]
            }

延迟加载路由文件:

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

import { CompanyViewComponent } from '@app/features/company-view/company-view.component';
import { PendingChangesGuard } from '@app/shared/guards';
import { CompanyActivityComponent } from './company-activity/company-activity.component';

const routes: Routes = [
  {
    path: '',
    component: CompanyViewComponent,
    children: [
      { 
        path: '', 
        redirectTo: 'view'
      },
      {
        path: 'activity',
        component: CompanyActivityComponent,
        data: {
          title: "Company Activity"
        }
      }
    ]
  }
];

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

如果我使用下面的路由,那么它工作正常:

const routes: Routes = [
  {
    path: '',
    component: CompanyViewComponent,
    children: [
      {
        path: ':id/activity',
        component: CompanyActivityComponent,
        data: {
          title: "Company Activity"
        }
      },
      {
        path: '**',
        redirectTo: 'activity'
      }
    ]
  }
];

那么如何将默认路由设置为 :id/activity

最佳答案

所以。您希望通过路由传递组件的变量。 在你的routes.ts中可以像这样path: 'company/:id/:activity'。 然后您需要将其交给您的组件。 我正在使用这个:id = this.route.snapshot.params['id']activity = this.route.snapshot.params['activity']。 从这里你可以通过另一个组件或任何你想要的。

例如:

<app-testcomponent
    [id]="id"
    [activity]="activity">
</app-testcomponent>

关于javascript - 在 Angular 8 中设置动态路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58935383/

相关文章:

javascript - 使用没有 Promise 的解决方案

html - 在 Angular 指令的 HTML 模板的表格单元格的同一行上显示文本和按钮

javascript - 为什么 Angular 中基于 jQuery token 的集成不起作用?

typescript - PhpStorm (WebStorm) - typescript 文件中反引号内的 HTML 代码常量在 4120 个字符后变为纯文本。失去语法高亮

javascript - typescript 限制最大数组长度

javascript - Reactjs 将子值传递给父级

javascript - 选中复选框时显示隐藏字段?

javascript - 有没有一种方法可以让我们将鼠标悬停在系列的任何点上而不是悬停在数据点上时触发 echarts 库上的 mouseover 事件?

相互依赖的 Angular 库辅助入口点

typescript - 更好的 TypeScript 推断可以返回多个不同对象的函数的返回类型