Angular новая папка компонентов принудительной установки маршрутизатора под корнем

Я пытаюсь использовать новый угловой маршрутизатор в своем проекте Angular 1.5 (+ Typescript).

Я следовал руководству по началу работы, но это заставляет меня иметь папку со всеми моими компонентами HTML прямо в моей корневой папке:

Не удалось создать экземпляр контроллера HomeController

http://localhost:8083/components/home/home.html 404 (не найдено )

Могу ли я изменить его?

Мой код маршрутизации:

this.$router.config([
      { path: '/', redirectTo: '/home' },
      { path: '/home', component: 'home' }}
]);

И мой компонент:

namespace app.dashboard {
    'use strict';

    class HomeController {
    }

    angular.module('app.dashboard')
        .component('home', {
            templateUrl: 'app/dashboard/components/home.html',
            controller: HomeController,
            controllerAs: 'HomeController',
            bindings: {}
        });
}

и моя вложенная папка - app/dashboard/components по корневому пути


person Dor Cohen    schedule 24.02.2016    source источник
comment
Вы пытались использовать какой-то шаблон для студии С#/Visual? Я знаю, что у меня есть это visualstudiogallery.msdn.microsoft.com/ и у меня есть структура mvc на VS.   -  person Radu    schedule 24.02.2016


Ответы (1)


Чтобы ваш html был где-то еще, вам нужно указать URL-адрес шаблона, например:

this.$router.config([
      { path: '/', redirectTo: '/home' },
      { path: '/home', component: 'home' },
      { path: '/login', component: 'login', templateUrl: '/views/login' }
]);

templateUrl — {string=|function()=} — путь или функция, которая возвращает путь к html-шаблону, который должен использоваться ngView.

Если templateUrl является функцией, она будет вызываться со следующими параметрами:

{Array.} - параметры маршрута, извлеченные из текущего $location.path() путем применения текущего маршрута

Подробнее о рутировании можно узнать по этой ссылке. под templateUrl вы можете указать путь к файлу без расширения.

ОБНОВЛЕНИЕ: вы хотите использовать этот конкретный файл this.$router.config? Я спрашиваю это, потому что вы можете что-то вроде:

app.config(['$stateProvider', '$locationProvider', function ($stateProvider, $locationProvider) {

        // UI States, URL Routing & Mapping. For more info see: https://github.com/angular-ui/ui-router
        // ------------------------------------------------------------------------------------------------------------
        $stateProvider
            .state('home', {
                url: '/',
                templateUrl: '/views/index',
                controller: 'HomeCtrl'

            });
}]);

И вам не нужно будет использовать компоненты, я думаю, то же самое для рутирования, но вам нужно будет добавить «ui.router» в качестве зависимости к вашему приложению.

person Radu    schedule 24.02.2016
comment
Я использую templateURL в своем компоненте (я отредактировал свой вопрос), когда пытался добавить, как вы предложили, это не сработало. Также зачем мне 2 строки компонента: 'home'? - person Dor Cohen; 24.02.2016
comment
сорри за 2 строчку домой я просто спешил :( Я обновил :) - person Radu; 24.02.2016
comment
Он все еще не работает и не может получить мой контроллер и все еще пытается открыть HTML из папки компонентов корневого пути (я отредактировал свой вопрос) - person Dor Cohen; 24.02.2016