Я заметил OnActivate
в Angular документах, и я пытаюсь реализовать его, чтобы изменить пользовательский интерфейс на основе текущего маршрута.
@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);
}
Что мне здесь не хватает?
Это мой файл pubspe c .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, так же, как было бы хорошо, чтобы оно работало через инъекцию маршрутизатора