Как сделать роутинг для переменной величины вложенности?
если данные не имеют дополнительного свойства категории, подкатегории или товара, то у вас потом будут проблемы с выбором данных
тут или соблюдать структуру, и тогда розам надо добавить подкатегорию "чайные", например, даже если такая подкатегория одна, либо каждый узел должен иметь набор свойств, например, тип
Насколько я знаю, ангуляр не поддерживает wildcard в маршрутах.
Во-вторых, в вашем случае никто не сможет распознать, когда в маршруте категория, а когда продукт.
Можно решить это вставкой дополнительных "указаний" и для каждого возможного варианта, видимо, придется делать свой маршрут. В итоге получится что-то вроде такого:app.config(['$routeProvider', function($routeProvider) {
        $routeProvider
                 .when('/catalogue/category/:category/:product', {templateUrl: 'xxx.html', controller: 'xxxCtrl'})
                  .when('/catalogue/category/:category/subcategory/:subcategory/:product', {templateUrl: 'xxx.html', controller: 'xxxCtrl'})
                  .when('/catalogue/:category/:category', {templateUrl: 'xxx.html', controller: 'xxxCtrl'});  
 }]);
и так далее.