2017-07-17 4 views
1

Ich schreibe ein einfaches Paging-Widget in Angular2Dart. Die Komponente verfügt über eine route-Methode, die die aktuelle Route abrufen, Parameter aktualisieren und navigieren soll. Ich bin mir nicht sicher, ob ich das richtig mache, aber in dieser aktuellen Implementierung verwende ich router.currentInstruction. Das Problem ist router.currentInstruction ist null.Angular2Dart Router.currentInstruction wird nicht gesetzt

Hier ist die Komponente (für diese Frage vereinfacht):

import 'package:angular2/angular2.dart'; 
import 'package:angular2/router.dart'; 
import 'package:angular_components/angular_components.dart'; 

@Component(
    selector: 'paging-component', 
    templateUrl: 'paging_component.html', 
    styleUrls: const [ 
    'paging_component.css' 
    ], 
    directives: const [ 
    CORE_DIRECTIVES, 
    FORM_DIRECTIVES, 
    materialDirectives, 
    ], 
) 
class PagingComponent { 

    final RouteParams routeParams; 
    final Router _router; 

    PagingComponent(this.routeParams, this._router); 

    void _route([Map<String, String> updatedParams]) { 
    var existingParams = new Map.from(routeParams.params); 
    if (updatedParams != null) { 
     existingParams.addAll(updatedParams); 
    } 
    var currentRoute = _router.currentInstruction.component.routeName; 
    _router.navigate([currentRoute, existingParams]); 
    } 
} 

Antwort

0

Sie die currentInstruction bekommen

@override 
void routerOnActivate(next, prev) { 
    print('Activating ${next.routeName} ${next.urlPath}'); 
} 

dort mit vielleicht andere Möglichkeiten geben. Ich kann nicht sagen, ob _router.currentInstruction in Ihrem Beispiel funktionieren sollte. Es kann davon abhängen, woher route(...) aufgerufen wird.

Siehe auch https://webdev.dartlang.org/angular/api/angular2.router/OnActivate-class

+0

Das funktionierte, obwohl ich currentInstruction verwenden würde es vorziehen. Um Ihre Frage zu beantworten, wird diese Routenmethode aufgerufen, nachdem die Komponente vollständig geladen wurde, z. B. wenn sie auf eine Schaltfläche "Nächste Seite" klicken. –