Ich schalte meine App auf das neue Routing DSL um. Insbesondere möchte ich mit preEnter
, so etwas zu tun:Wie man Dienste in RouteInitializerFn injiziert (neues Routing DSL)
final RouteInitializerFn routes =(Router router, ViewFactory views) {
views.configure({
'chat': ngRoute(
path: '/chat',
// authService.requireState returns a Future<bool>, and may invoke an HttpRequest
preEnter: (RoutePreEnterEvent e) => e.allowEnter(authService.requireState(LOGGED_IN)),
view: 'views/chat.html'),
'login': ngRoute(
path: '',
defaultRoute: true,
view: 'views/login.html')
});
}
Dies würde im Modul so konfiguriert werden, wie folgt:
value(RouteInitializerFn, routes);
Falls Sie es verpasst, ich bin Referenzierung eine injizierbare authService
innerhalb der RouteInitializerFn
. Dies ist nicht möglich, da RouteInitializerFn
eine Funktion und keine Klasse ist, also kann nichts in sie eingefügt werden. Wenn ich die routes
Funktion innerhalb einer Klasse gekapselt habe, bin ich nicht sicher, wie ich RouteInitializerFn
konfigurieren könnte, also bin ich in einer Zwickmühle.
Diese saubere Lösung scheint mit Dart 1,5 gebrochen zu haben. Ich bekomme jetzt "Illegale Argument (e): Kein Typ Factory für Routen zur Verfügung gestellt! (Auflösung RouteInitializerFn)" – TaisPH
Das ist seltsam. Ich laufe 1.5.1 und es funktioniert immer noch für mich. –
Ich bin auch auf 1.5.1. Kein Code wurde geändert und Abhängigkeiten sind genau die Version, die sie vor dem Aktualisieren von Dart waren. – TaisPH