splincodewd
@splincodewd
Developer

Как в одном директиве (компоненте) подключить другую на Angular?

У меня есть 2 директивы и 2 файла (login.html и main.html)
Внутри html файлов нам нужно подключать другие компоненты

Сейчас логика такая, но компоненты внутри не подключаются:
index.html
<body>
<login-content></login-content>
</body>


app.js
window.app = angular.module("myApp", []);
import loginComponent from './angular/directives/loginContent.js';
app.directive('loginContent', loginComponent);

// ..


loginContent.js
export default function() { 
  return { 
    restrict: 'E', 
    scope: { 
      info: '=' 
    }, 
    templateUrl: 'public/html/login.html' 
  }; 
}


login.html
<div class="row" ng-controller="LoginController">
 
     <navigation></navigation>
     <widgets></widgets>

</div>


Проблема в том, как LoginController должен уметь подключать эти самые директивы(компоненты), объясните ?

LoginController
/**
 * Контроллер, обрабатывающий компонент формы входа и регистрации
 * @param {object} $rootScope - общая область видимости шаблонов для приложения 
 * @param {object} $http - ajax-объект для работы с http-запросами
 * @param {object} $compile - объект для добавления нового DOM и связывания с обработчиками
 * @param {object} $scope - локальная область видимости шаблонов относительно компонента контроллера
 * @param {object} dataService - сервис, обменивающийся данными между контроллерами
 */
export default ($rootScope, $http, $compile, $scope, dataService) => {

    // пытался сделать так
    app.directive('navigation', require('./../directives/navContent.js'));
    // но пишет, что app пустой и нет такого метода 

}


и как например, можно вложенные компоненты подключать?
например в определении компоненты widgets внутри html шаблона может быть компонент pagination, а как он тогда будет подключаться компонентом widgets?
  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
AMar4enko
@AMar4enko
Так работать не будет. Вы пытаетесь сделать что-то вроде "ленивой" загрузки.
Объявляйте все директивы перед стартом приложения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы