Le problème est que main-view.ts
dans le projet de démarrage a une logique qui essaie de lister tous les itinéraires de navigation afin de générer des liens pour eux. Actuellement, cette logique n'est pas assez intelligente pour détecter et ignorer les itinéraires dont les paramètres ne sont pas optionnels.
L'erreur est provoquée par router.urlForPath(viewRoute.path)
lorsque le path
a des paramètres de route non optionnels parce qu'ici nous ne spécifions pas quelle doit être la valeur du paramètre de route (pour l'URL générée). Pour générer une URL pour le chemin 'item/:item'
il devrait faire quelque chose comme router.urlForPath('item/:item', { item: 'my-item' })
.
La solution rapide (retirer le title
de la définition de l'itinéraire) suggérée par Marcus fonctionne parce que le main-view.ts
a la logique de sauter tous les itinéraires qui n'ont pas de title
. Vous pourriez modifier cette logique pour passer également par d'autres critères ou vous pourriez essayer d'inclure des valeurs pour les paramètres de l'itinéraire (pour des itinéraires spécifiques) si vous voulez vraiment générer des liens de navigation fonctionnels pour ces itinéraires.
Une autre solution consisterait à indiquer que le paramètre de l'itinéraire est facultatif (au cas où vous souhaiteriez que l'itinéraire soit également accessible sans paramètre) en ajoutant un point d'interrogation après le paramètre, de sorte que le lien puisse être généré sans qu'une valeur soit spécifiée pour le paramètre.
{
path: 'item/:item?', // <- optional route parameter
component: 'item-view',
title: 'Hello World',
}