2017-09-14 4 views
2

J'ai récemment rencontré un problème avec l'annotation CanActivate depuis la migration de la version 4 d'AngularDart. En effet, l'annotation CanActivate ne s'exécute pas. Mon code:CanActivate ne fonctionne pas 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; 
} 

Quelqu'un at-il rencontré ce problème avec la version 4 de AngularDart? merci pour l'aide.

Répondre

1

Malheureusement, CanActivate n'est plus pris en charge dans AngularDart 4.0.0. Il a fallu du code de compilation très spécial qui ne peut pas être supporté à long terme, et le routeur change en 5.x.x. Pour contourner ce problème, je suggère d'utiliser la méthode de cycle de vie OnActivate.

Je vais ajouter un bug pour supprimer l'API et documenter cette modification.

+0

En effet, j'ai remarqué que votre collègue @Alorenzen a récemment réécrit certaines classes du paquetage angular_router. Merci pour l'aide. –