JSFiddle - React, Tailwind, and code Playground

HTML

<div ng-app="myapp">
    <div ng-controller="HomeCtrl">
    <ul class="nav navbar-nav">
          <li ng-repeat="menu in menus">
            <a href ng-click="headerCtrl.go(menu)">{{menu.displayName}}</a>
            <recursive-menu-tree menu="menu"></recursive-menu-tree>
          </li>
        </ul>
    </div>
</div>

JavaScript

var app = angular.module('myapp',[]);

app.directive('recursiveMenuTree', function($compile) {
  
    var directive = {};
    directive.restrict = 'E';
    directive.scope = {
      menu : '='
    };
    directive.template = '<ul class=""><li ng-repeat="menu in menu.submenus"><a href ng-click="headerCtrl.go(menu)">{{menu.displayName}}</a><recursive-menu-tree menu="menu"></recursive-menu-tree></li></ul>';
    
    directive.compile = function(tElement, tAttrs) {
      var contents = tElement.contents().remove();
      var compiledContents;
      return {
        post : function(scope, iElement, iAttr) {
          console.log(scope.menu);
          if(!compiledContents){
            compiledContents = $compile(contents);
          }
            
          compiledContents(scope, function(clone){
             iElement.append(clone);
          });
        }
      };
    };

    return directive;
});

app.controller('HomeCtrl', function($scope) {
    $scope.menus = [
        {
            displayName : 'Home',
            submenus : [
                {
                    displayName: 'Menu item 1',
                    submenus : []
                },
                {
                    displayName: 'Menu item 2',
                    submenus : []
                },
                {
                    displayName: 'Menu item 3',
                    submenus : []
                }
            ]
        },
        {
            displayName : 'About us',
            submenus : []
        },
        {
            displayName : 'Contact us',
            submenus : []
        }
    ];
})