首页 > 解决方案 > 路由器使用角度 7 导航

问题描述

我有一个关于在我的代码中某处使用角度导航的问题

this.router.navigate([12345678 + '/data']);

在我的 app-routing.module

    path: ':nossnbr/data',
    component: DataComponent,
  },

在我的组件 DataComponent 中(在 NgOnInit 中)

  ngOnInit() {
     this.routerSubscription = this.activatedRoute.params.subscribe(params => {
        // ....   do something
     });

  }

导航 (this.router.navigate([12345678 + '/data']);) 不起作用。什么都没有发生,我们不通过订阅

另一方面,如果我在浏览器中直接输入 url(localhost:4200/12345678/data),它就会传入订阅

2个电话有什么区别?为什么我使用导航时它不通过订阅?

标签: angularnavigation

解决方案


最佳实践

您还需要与路由一起定义模块名称。如果仅在根模块中应用路由,则路由中不需要模块名称,但是在不同的模块中路由时,通过定义模块名称来导航,我们需要路由,然后是路由。

例如:有2个模块:app和home模块,我们在home路由模块中定义了一个路由,即/dashboard。

在 root/app 路由模块中定义模块路由,如:

 path: 'home-module',
  loadChildren: () => import('./home/home.module').then(m => 
  m.HomeModule)
 },

在 home 模块的组件的 .ts 中,我们将定义路由,如:

this._router.navigate(['./home-module/dashboard/']);

推荐阅读