2017-07-17 37 views
1

我在Angular2Dart中寫了一個簡單的分頁部件。該組件有一個route方法,該方法應該獲取當前路由,更新參數和導航。我不確定我是否正確執行此操作,但在當前的實施中,我使用的是router.currentInstruction。問題是router.currentInstruction爲空。Angular2Dart Router.currentInstruction沒有設置

這裏是組件(簡化了這個問題):

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]); 
    } 
} 

回答

0

你可以使用

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

可能還有其他的方式currentInstruction。我不知道您的示例中的_router.currentInstruction是否可以工作。它可能取決於從哪裏調用route(...)

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

+0

這工作看,雖然我更喜歡使用currentInstruction。爲了回答你的問題,這個'route'方法在組件完全加載後被調用,例如,當他們點擊一個「Next Page」按鈕時。 –