2016-09-19 4 views
0

Я пытаюсь реализовать метод «CanActivate» в моей службе, а ниже кодКак реализовать CanActivate охранник в Angular2

import { Injectable } from '@angular/core'; 
import { CanActivate } from '@angular/router'; 

@Injectable() 
export class GuardUserSearchService implements CanActivate { 

    CanActivate() { 
     console.log('dummy guard clause for User search'); 
     return true; 
    } 
} 

сервис Когда я компилирую этот машинопись код, он отображает следующие ошибки

Класс 'GuardUserSearchService' неправильно реализует интерфейс 'CanActivate'.

Любая идея, в чем проблема в моем коде.

ответ

6

Ваша служба должна реализовать эту функцию в полной мере реализовать этот интерфейс CanActivate:

canActivate(
    next: ActivatedRouteSnapshot, 
    state: RouterStateSnapshot 
): Observable<boolean> | Promise<boolean> | boolean { } 

виду, что имя интерфейса CanActivate (с прописными буквами C), тогда как имя метода является canActive (в нижнем регистре c).

+0

даже после модификации, он показывает ту же ошибку. Моя версия angular2 - RC-6. – refactor

+4

Пожалуйста, проверьте также чувствительность к регистру. Функция должна быть 'canActivate', а не' CanActivate' –

+0

lol..i также делал ту же ошибку upperCase 'C' в функции canActivate. –

1

Согласно the documentation, интерфейс выглядит следующим образом:

interface CanActivate { 
    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) : Observable<boolean>|Promise<boolean>|boolean 
} 

Итак, ваша реализация не хватает аргументов:

export class GuardUserSearchService implements CanActivate { 
    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { 
     console.log('dummy guard clause for User search'); 
     return true; 
    } 
} 
Смежные вопросы