Уже второй день бьюсь об это головой. Я пытаюсь реализовать простую маршрутизацию в Angular2 beta0.0.2. Обратите внимание, что я использую typescript.
Итак, я понимаю, что мне нужно загрузить мой корневой компонент приложения с помощью ROUTER_PROVIDERS, чтобы эти службы были доступны моему приложению who И установить директивы для компонентов, которые хотят внедрить маршрутизацию на ROUTER_DIRECTIVES.
Вот что у меня есть:
//ANGULAR ******************************
import {provide, Component} from 'angular2/core';
import {bootstrap} from 'angular2/platform/browser';
import {
APP_BASE_HREF,
ROUTER_DIRECTIVES,
ROUTER_PROVIDERS,
HashLocationStrategy,
LocationStrategy,
RouteConfig,
} from 'angular2/router';
//COMPONENTS ******************************
import {ShiftCalendarComponent} from './components/calendar/shift-calendar.component';
import {ShiftAdminComponent} from './components/admin/shift-admin.component';
import {ShiftListComponent} from './components/shifts/shift-list.component';
//CLASS ******************************
@Component({
selector: 'shift-app',
directives: [ROUTER_DIRECTIVES],
template: `<div>
<nav>
<h3> Navigation: </h3>
<ul>
<li><a [routerLink]="['Calendar']" > Home </a></li>
<li><a [routerLink]="['Admin']" > About </a></li>
<li><a [routerLink]="['Shifts']" > Contact us </a></li>
</ul>
</nav>
<router-outlet></router-outlet>
</div>`
})
@RouteConfig([
{ path: '/', name: 'root', redirectTo: ['/Calendar'] },
{ path: '/calendar', name: 'Calendar', component: ShiftCalendarComponent },
{ path: '/admin', name: 'Admin', component: ShiftAdminComponent },
{ path: '/shifts', name: 'Shifts', component: ShiftListComponent }
])
export class ShiftApp { }
//BOOTSTRAP ******************************
bootstrap(ShiftApp, [
ROUTER_PROVIDERS,
provide(LocationStrategy, { useClass: HashLocationStrategy }),
provide(APP_BASE_HREF, { useValue: '/' })
]);
Приложение angular загружается, и шаблон отображается, но ссылка не работает, и я получаю следующую ошибку в своей консоли:
ИСКЛЮЧЕНИЕ: Нет провайдера для маршрутизатора! (RouterLink -> Маршрутизатор) angular2.dev.js
В моем index.html (который я называю view.html) я связался со всеми соответствующими библиотеками и включил router.dev.js, и вкладка источников моей консоли показывает мне, что все необходимые сценарии успешно загружаются.
Я читал о каждом вопросе о переполнении стека с ошибками ссылки на маршрутизатор для Angular2 и всей документации по маршрутизатору, но не могу найти, почему мой не работает. Насколько я могу судить, мой код соответствует документации Angular2.
Эта документация показывает, что ROUTER_DIRECTIVES включает такие директивы, как RouterOutlet и RouterLink
Вопрос?
Если я успешно устанавливаю директивы для компонента на ROUTER_DIRECTIVES, почему я получаю сообщение об ошибке «Нет провайдера для Router! RouterLink»?