A new approach to Angular routes:
[routerLink]="routes.one.two.three"
instead of [routerLink]="['one','two','three']"
type
containing all your routes information.tsconfig
Install the package via Angular schematic:
ng add @routerkit/core
You can run Angular schematic to generate the routes type:
ng g @routerkit/core:parse --project YOUR_PROJECT_NAME
Before:
import { Component } from '@angular/core';
@Component({
selector: 'user-details-link',
template: `<a routerLink="/profile/users/{{ usersId }}">User Details</a>`
})
export class UserComponent {
usersId = 42;
}
After:
import { Component } from '@angular/core';
import { getRoutes } from '@routerkit/core';
import { TypedRoutes } from '{ROOT}/{PROJECT_NAME}.routes.d.ts';
@Component({
selector: 'user-details-link',
template: `<a routerLink="{{ routes.profile.users[usersId] }}">User Details</a>`
})
export class UserComponent {
routes: TypedRoutes = getRoutes<TypedRoutes>();
usersId = 42;
}
Tip: if you prefer [routerLink] directive you can use asArray
(asString is available too) property
Before:
<a [routerLink]="['/', 'profile', 'users', userId]">Navigate</a>
After:
<a [routerLink]="routes.profile.users[userId].asArray">Navigate</a>
Thanks goes to these wonderful people (emoji key):
Max Tarsis 🤔 💻 🚇 📖 📆 |
Denis Makarov 🤔 💻 |
Kirill Cherkashin 🤔 📖 |
Andrew Grekov 🤔 |
Lars Gyrup Brink Nielsen 📖 |
Joep Kockelkorn 🐛 |
Gatej Andrei 💻 |
This project follows the all-contributors specification. Contributions of any kind welcome!