«Нет поставщика для 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?
Любая помощь или совет будет принята с благодарностью. Спасибо !