我正在寻找一个解决方案,在Angular(5 +)的网址中重复部分。
类似于商店类别和产品。
Ids真的是UUID,但为了简洁起见,我将在这里使用整数。
让我们说:
我想构建以下网址。
/TV/
(类别列表页面)
/TV/Samsung/
(类别列表页面)
/TV/Samsung/Some TV-1
(产品浏览页面)
/Personal Devices/
(类别列表页面)
/Personal Devices/Mobile Phones/
(类别列表页面)
/Personal Devices/Mobile Phones/Samsung/
(类别列表页面)
/Personal Devices/Mobile Phones/Samsung/Some Phone-2
(产品视图页面)
我可以获取所有产品类别,并使用parentId引用将它们排列到树中。注意三星只是一个与另一个名称相同的类别。
这里棘手的部分是,在我从服务器获取类别之前,我不知道其中的类别深度或产品位置。
不,像/:product-:product-id
这样的路线不是一种选择。
所以路线可能是
/:categoryName/
/:categoryName/:categoryName/
/:categoryName/:productName-:productId
或者用正则表达式解释:
/(:categoryName/)+ for CategoryComponent
/:categoryName/(:categoryName/)*:productName-:productId for ProductComponent
自定义路由matcher是ProductComponent的一个不错的选项,其中找不到保护/解析检查但是如何处理这些嵌套类别?
如何通过使用自定义匹配器来处理这个问题,还是我可以使用其他东西?