«Нет поставщика для AuthGuard!» С использованием CanActivate в Angular 2

РЕДАКТИРОВАТЬ : Очевидно, это устарело, теперь вы предоставляете свою охрану наproviders массив в NgModule. Смотрите другие ответы или официальную документацию для получения дополнительной информации.

начальная загрузка компонента устарелаprovideRouter() также устарела

Я пытаюсь настроить Аутентификацию в своем проекте, используя логин и AuthGuard из руководства Angular2:https://angular.io/docs/ts/latest/guide/router.html

Я использую релиз: "@ angular / router": "3.0.0-beta.1".

Я постараюсь объяснить как можно больше, не стесняйтесь сказать мне, если вам нужно больше деталей.

У меня есть мойmain.ts файл, который запускает приложение с помощью следующего кода:

bootstrap(MasterComponent, [
    APP_ROUTER_PROVIDERS,
    MenuService
])
.catch(err => console.error(err));

Я загружаю MasterComponent, который загружает заголовок, содержащий кнопки, которые позволяют мне перемещаться по моему приложению, и он также содержит мой основной на данный момент.

Я следую инструкциям, чтобы приложение работало точно так же,app.routes.ts :

export const routes: RouterConfig = [
    ...LoginRoutes,
    ...MasterRoutes
];

export const APP_ROUTER_PROVIDERS = [
    provideRouter(routes),
    AUTH_PROVIDERS
];

Иlogin.routes.ts из руководства, которое определяет мой AuthGuard:

export const LoginRoutes = [
    { path: 'login', component: LoginComponent }
];

export const AUTH_PROVIDERS = [AuthGuard, AuthService];

Мой мастер-компонент имеет свое собственное определение маршрута, которое также содержит охрану, которую я пытаюсь настроить.master.routes.ts :

export const MasterRoutes : RouterConfig = [
    { path: '', redirectTo: '/accueil', pathMatch: 'full' },

    {
        path: 'accueil',
        component: AccueilComponent
    },

    { path: 'dashboard', component: DashboardComponent, canActivate: [AuthGuard] },
];

И я использую те же файлы, что и руководство, которыеauth.guard.ts, auth.service.ts, login.component.ts а такжеlogin.routes.ts.

В моемheader.component.ts файл, когда я пытаюсь получить доступ к любым маршрутам, он работает просто отлично, но когда я пытаюсь получить доступ к защищенному пути (/ dashboard), я получаюНет поставщика для AuthGuard! ошибка.

Я видел недавний пост с той же проблемой, что и мой (NoProviderError с использованием CanActivate в Angular 2), но мне охранник правильно загружен доmain.ts файл, поэтому мой маршрутизатор должен знать, какие маршруты должны быть предоставлены с правом AuthGuard?

Любая помощь или совет будет принята с благодарностью. Спасибо !

Ответы на вопрос(11)

Ваш ответ на вопрос