2017-09-14 83 views
2

我最近在CanActivate注释中遇到了问题,因为我从AngularDart的版本4迁移过来。事实上,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

不幸的是CanActivate已不再支持AngularDart 4.0.0。它需要非常特殊的编译器代码,不能长期支持,并且路由器正在更改5.x.x。作为解决方法,我建议使用OnActivate生命周期方法。

我将添加一个错误消除API并记录此更改。

+0

的确,我注意到你的同事@Alorenzen最近重写了一些angular_router包的类。 感谢您的帮助。 –