使用AngularDart5获取当前路线名称/网址

问题描述 投票:0回答:1

[我在Angular文档中注意到一个OnActivate,我正在尝试实现它,以便根据当前路线更改UI。

@Component(
    selector: "blah", 
    template: """blah""", 
    directives: const [routerDirectives])
class Blah extends Object with Reuse implements OnActivate {

    @override
    void onActivate(RouterState previous, RouterState current) {
        window.alert("Activated");
        print("activated");
    }

} 

重新加载页面或使用路由器切换路由,并且onActivate不会触发

我正在使用此代码段来导航哪个有效:

  void navigate(RouteDefinition route) {
    final NavigationParams params =
        new NavigationParams(queryParameters: {"project-id": "1", "workspace-id": "2"}, replace: true);

    router.navigate(route.path, params);
  }

我在这里想念什么?

这是我的pubspec.yaml文件:

name: blah
version: 0.0.0
description: Blah

environment:
  sdk: ">=2.0.0 <3.0.0"

dependencies:
  angular: ^5.3.1
  angular_forms: ^2.1.2
  angular_router: ^2.0.0-alpha+22
  event_bus: any
  http: any
  js: ^0.6.0
  logging: ^0.11.3+1
  html: any
  html_unescape: ^1.0.1+2
  google_maps: ^3.4.1

  someothercomponent:
    path: ../someothercomponent

dev_dependencies:
  angular_test: 2.3.0
  build_runner: ^1.5.2
  build_test: ^0.10.2
  build_web_compilers: ^2.0.0
  test: ^1.0.0

EDIT:当我通过构造函数注入路由器时,我不知道这是否以任何方式关联,>

  final Router router;

  ProjectLayout(this.router) {

    log.fine(this.router.current.toUrl());

  }

this.router.current为空

添加this.route

  final RouterState route;
  final Router router;


  ProjectLayout(this.router, this.route) {

    log.fine(route.toUrl());

  }

它抱怨No provider found for RouterState,将RouterState添加为提供者,该错误变得非常奇怪:

dart_sdk.js:99585 EXCEPTION: No provider found for String: RouterState -> String.
**NOTE**: This path is not exhaustive, and nodes may be missing in between the "->" delimiters. There is ongoing work to improve this error message and include all the nodes where possible. 
STACKTRACE: 
dart:sdk_internal                                                          throw_
package:angular/src/di/injector/injector.dart 20:3                         throwsNotFound
package:angular/src/di/injector/injector.dart 92:14                        get
package:angular/src/core/linker/app_view.dart 313:28                       injectorGet
package:angular/src/di/injector/element.dart 23:16                         [_injectFrom]
package:angular/src/di/injector/element.dart 31:7        

因此,最好使用OnActivate使其正常工作,就像通过路由器注入使其正常工作一样。

我在Angular文档中注意到一个OnActivate,我正在尝试实现它,以便根据当前路线更改UI。 @Component(选择器:“ blah”,模板:“”“ blah”“”,...

angular dart angular-ui-router angular-dart
1个回答
0
投票

因此,根据对gitter的讨论,似乎OnActivate仅适用于直接切入/切出路由器插座的组件,因此OnActivate将永远不适用于子组件。

© www.soinside.com 2019 - 2024. All rights reserved.