Angular 10 - Angular 有没有办法为您建立路线路径?
Angular 10 - Does Angular have a way to build paths of routes for you?
您可以像这样将数据附加到路由:
// app-routing.module.ts
const routes: Routes = [
{path: "/some/path/bla/", component: SomeComponent, data:{ name: "home1"}},
{path: "/some/path/:variable/bla/", component: SomeComponent, data:{ name: "home2"}},
]
Angular 的 Router 模块是否有内置的方法来从该数据为您生成路径,例如:
const routeName1 = "home1";
getPathForRoute(routeName1) //Returns "/some/path/bla/"
const routeName2 = "home2";
const parameters = {"variable": "stringValueForVariable"};
getPathForRoute(routeName2, parameters); //Returns "/some/path/stringValueForVariable/bla/"
这纯粹是为了避免硬编码 paths/routes,类似于您在 Django 中使用其 reverse
函数可以这样做的方式。我知道默认的建议似乎是将你的路由放在一个充满常量的模块中,然后引用它。但是,鉴于您需要维护该常量文件,这对我来说似乎是一个不干净的解决方案。
这个概念似乎很容易实现,而且鉴于我知道有很多聪明的人在做这件事,我几乎可以肯定这个功能就在某个地方,只是我不认识它。然而,浏览 angular's routing documentation,没有什么是 Angular 版本的这种功能。 SO-关于避免硬编码路由的问题大多得到上述解决方案的回答,即有一个常量文件来存储 url,出于上述原因,我想避免这种情况。那我错过了什么?
编辑:我已经接受显然 Angular 对此没有任何帮助。因此,如果有人想自己实现它,如果你想要灵感,这就是我到目前为止所做的(当你阅读这篇文章时,希望在它下面进行代码审查以改进我实现的任何东西):
https://codereview.stackexchange.com/questions/253189/implementing-djangos-reverse-functionality-in-angular-routing
据我所知,Angular 路由器模块没有任何生成路径的内置方法。您必须在路由模块和代码中声明路径,您可以使用以下代码重定向到特定页面
this.router.navigate(['/custompath']);
您可以使用 createUrlTree 获取它:
this.router.createUrlTree(['home2', 'book', 'details', id])
您可以使用以下路由器方法获取完整的 url(https://*):
this.router.serializeUrl(
this.router.createUrlTree(['home2', 'book', 'details', id])
);
*注意:id 是 url 参数;
您可以像这样将数据附加到路由:
// app-routing.module.ts
const routes: Routes = [
{path: "/some/path/bla/", component: SomeComponent, data:{ name: "home1"}},
{path: "/some/path/:variable/bla/", component: SomeComponent, data:{ name: "home2"}},
]
Angular 的 Router 模块是否有内置的方法来从该数据为您生成路径,例如:
const routeName1 = "home1";
getPathForRoute(routeName1) //Returns "/some/path/bla/"
const routeName2 = "home2";
const parameters = {"variable": "stringValueForVariable"};
getPathForRoute(routeName2, parameters); //Returns "/some/path/stringValueForVariable/bla/"
这纯粹是为了避免硬编码 paths/routes,类似于您在 Django 中使用其 reverse
函数可以这样做的方式。我知道默认的建议似乎是将你的路由放在一个充满常量的模块中,然后引用它。但是,鉴于您需要维护该常量文件,这对我来说似乎是一个不干净的解决方案。
这个概念似乎很容易实现,而且鉴于我知道有很多聪明的人在做这件事,我几乎可以肯定这个功能就在某个地方,只是我不认识它。然而,浏览 angular's routing documentation,没有什么是 Angular 版本的这种功能。 SO-关于避免硬编码路由的问题大多得到上述解决方案的回答,即有一个常量文件来存储 url,出于上述原因,我想避免这种情况。那我错过了什么?
编辑:我已经接受显然 Angular 对此没有任何帮助。因此,如果有人想自己实现它,如果你想要灵感,这就是我到目前为止所做的(当你阅读这篇文章时,希望在它下面进行代码审查以改进我实现的任何东西): https://codereview.stackexchange.com/questions/253189/implementing-djangos-reverse-functionality-in-angular-routing
据我所知,Angular 路由器模块没有任何生成路径的内置方法。您必须在路由模块和代码中声明路径,您可以使用以下代码重定向到特定页面
this.router.navigate(['/custompath']);
您可以使用 createUrlTree 获取它:
this.router.createUrlTree(['home2', 'book', 'details', id])
您可以使用以下路由器方法获取完整的 url(https://*):
this.router.serializeUrl(
this.router.createUrlTree(['home2', 'book', 'details', id])
);
*注意:id 是 url 参数;