2016-12-09 32 views
6

Tôi đang cố gắng tạo bảo vệ tuyến đường, đọc một vài blog và Angular 2 official documentation trên đó. Nhưng tôi vẫn không thể làm cho nó hoạt động được.Góc 2 CanActivate không hoạt động

Dưới đây là RouteGuard (Tôi đã gỡ bỏ luận lý khai thác gỗ để chắc chắn vấn đề đó là trong việc định tuyến, không phải trong logic xác thực.):

import { Observable } from 'rxjs/Observable'; 
import { Injectable } from '@angular/core'; 
import { Router, CanActivate, CanActivateChild, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; 

@Injectable() 
export class RouteGuard implements CanActivate { 
    constructor() { 
    var a = 5; 
    console.log("RouterGuard called"); 
    } 

    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { 
    console.log("RouterGuard called"); 
    return true; 
    } 
} 

Ở đây tôi có một số tuyến:

import { RouteGuard } from './common/routeGuard'; 
import { ClassifiersComponent } from './components/classifiers/classifiers.component'; 
import { Routes } from '@angular/router'; 
import { HomeComponent } from './components/home/home.component'; 

export const routes: Routes = [ 
    { path: '', component: HomeComponent }, 
    { path: 'classifiers', component: ClassifiersComponent, canActivate: [RouteGuard] }, 
]; 

Và sau đó tôi vượt qua chúng trong phương pháp bootstrapper:

import { RouteGuard } from './app/common/routeGuard'; 
import { ClassifiersComponent } from './app/components/classifiers/classifiers.component'; 
import { HomeComponent } from './app/components/home/home.component'; 
import { routes } from './app/app.routes'; 

@NgModule({ 
    imports: [ 
     RouterModule.forRoot(routes) 
    ], 
    providers: [ 
     { provide: LocationStrategy, useClass: PathLocationStrategy }, 
     { provide: APP_BASE_HREF, useValue: '/' }, 
     RouteGuard 
    ], 
    declarations: [ 
     AppComponent, 
     HomeComponent, 
     ClassifiersComponent 
    ], 
    bootstrap: [AppComponent] 
}) 
export class AppModule {} 

Tôi không chắc chắn những gì là sai với tất cả điều này , có thể tôi đang thiếu một cái gì đó quan trọng. Từ gỡ lỗi tôi có thể nói rằng nó đánh canActivate() breakpoint, nhưng không thực thi console.log, tương tự với hàm tạo.

EDIT: Các tuyến đường khác không có bất kỳ xác thực tuyến đường nào hoạt động tốt.

EDIT2: Tôi đang sử dụng góc/core 2.2.0, góc/router 3.2.0

+0

Hành vi hiện tại là gì? Hành vi mong đợi là gì? –

+0

Hiện tại nó chặn tuyến đường? Tôi không chắc vì nó không viết bất cứ thứ gì. Cần phải viết rằng RouteGuard được gọi. Và rout không nên bị chặn bởi vì canActivate() luôn trả về true; – Leon

+0

Vì vậy, 'RouterGuard được gọi là' là ** không ** được in trên giao diện điều khiển của trình duyệt? –

Trả lời

-1

Update để góc/lõi 2. .0, góc/router 3. .0 giải quyết vấn đề này, tôi không biết tại sao.

+0

Không làm việc cho tôi. –

Các vấn đề liên quan