2017-09-14 4 views
2

AngularDart 버전 4에서 마이그레이션 한 이후 CanActivate 주석에 문제가있었습니다. 실제로 CanActivate 주석은 실행되지 않습니다. 내 코드 :CanActivate가 작동하지 않습니다. AngularDart 4

import 'dart:html' as html; 

import 'package:angular/angular.dart'; 
import 'package:angular_router/angular_router.dart'; 
import 'package:maho_enterprise/app_component.dart'; 
// Others import 

@Component(selector: "view-main" 
    ,templateUrl: "main_component.html" 
    ,styleUrls: const ["main_component.css"] 
    ,directives: const [TopBarComponent,SideBarComponent]) 
@CanActivate(verifyIfUserIfAuthenticate) 
class MainComponent { 

} 

bool verifyIfUserIfAuthenticate(ComponentInstruction next, ComponentInstruction prev) { 
    html.window.console.info("CanActivate works correctly"); 
    AuthenticationService service = new AuthenticationService.empty(); 
    bool connected = service.isConnected(); 
    html.window.console.info("Value connected : "+connected.toString()); 
    if(!connected) { 
    Router router = myInjector.get(Router); 
    router.navigateByUrl("/login"); 
    return false; 
    } 
    return true; 
} 

사람은 AngularDart의 버전 4와이 문제가 발생 했습니까? 도움을 주셔서 감사합니다.

답변

1

불행히도 CanActivateAngularDart 4.0.0에서 더 이상 지원되지 않습니다. 장기간 지원할 수없는 매우 특별한 컴파일러 코드가 필요했고 라우터가 5.x.x에서 변경되었습니다. 이 문제를 해결하려면 OnActivate 수명주기 방법을 사용하는 것이 좋습니다.

API를 제거하고이 변경 사항을 문서화하는 버그를 추가 할 것입니다.

+0

사실, 동료 인 @Alorenzen이 최근 angular_router 패키지의 일부 클래스를 다시 작성한 것으로 나타났습니다. 도움 주셔서 감사합니다. –