Angular2Dart Router.currentInstruction未设置

时间:2017-07-17 20:27:00

标签: angular dart angular-dart angular-router

我正在Angular2Dart中编写一个简单的分页窗口小部件。该组件具有route方法,该方法应获取当前路由,更新参数和导航。我不确定我是否正确执行此操作,但在当前的实现中,我使用的是router.currentInstruction。问题是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]);
  }
}

1 个答案:

答案 0 :(得分:0)

您可以使用

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

可能还有其他方法。我不知道你的例子中的_router.currentInstruction是否应该有用。这可能取决于调用route(...)的位置。

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