fix: ensure router subpath is always matching against string starting with /
wer ist dagegen beim router immer zu garantieren dass die zu matchende route mit / beginnt? Problem: nested routers, top component hat einen parameter als letzten pfadteil:
// top component
@state() private readonly _router = new Router(this, [
{ name: 'root', render: params => this._content() },
// Das geht nicht weil dann der parameter den ganzen rest des
// pfades frisst und nichts an das nested component weitergegeben wird
// { name: 'content', path: '/:subPage*', render: params => this._content(params.subPage) },
{ name: 'content', path: '/:subPage', render: params => this._content(params.subPage) },
// das frisst jetzt meinen slash D:
{ name: 'content-deep', path: '/:subPage/*', render: params => this._content(params.subPage) },
]);
// nested component
@state() private readonly _router = new Router<Record<string, any>, string, 'root' | Action>(this, [
{ name: 'root', render: params => this._content(this._table()) },
// wenn ich nur ein name angebe defaulted der zu matchende path auf `/${name}*`
{ name: Action.CREATE, render: params => this._content(html` <wu-game-add-edit></wu-game-add-edit> `) },
{
name: Action.EDIT,
path: `/${Action.EDIT}/:gameID`,
render: params => this._content(html` <wu-game-add-edit .gameID=${params.gameID}></wu-game-add-edit> `),
},
{
name: Action.DETAIL,
path: `/${Action.DETAIL}/:gameID`,
render: params => this._content(html` <wu-game-detail .gameID=${params.gameID}></wu-game-detail> `),
},
]);
auf dem pfad /cms/game/create findet sich jetzt natürlich kein router, da im nested component der pfad create gegen /create* gematcht wird wäre auch interessant das im top component vereinfachen zu können irgendwie
das löst lustigerweise auch unser root route problem