Я пытаюсь заставить маршрутизацию AngularDart работать должным образом, и у меня болит голова.Я пытаюсь получить параметр запроса для дочернего маршрута, и он не работает в моем компоненте при расширении OnActivate, например , в учебнике здесь указано .Он распознает страницу, но не дает мне параметр в RouterState.Я не знаю почему.Я не получаю ошибок и не получаю никаких предупреждений или чего-либо еще.Сейчас я могу обойти его, используя класс Uri
, чтобы проверить другие вещи и сохранить свой импульс, но я бы предпочел, чтобы он работал как положено.
Это структура:
Top
- /routes.dart
- /route_paths.dart
- /resources_list_component.dart
- /resources
- ./resources_routes.dart
- ./resources_route_paths.dart
- ./my_resource_component.dart
- ./my_resource_component.html
В /route_paths.dart
У меня есть
static final resources = RoutePath(path: 'resources');
, который затем используется в /routes.dart
:
static final resources = RouteDefinition(
routePath: RoutePaths.resouces
component: resource_list_template.ResourceListComponentNgFactory
);
Затем я использую этот маршрут в качестве родительского маршрутизатора в моем файле путей к ресурсам:
static final resource = RoutePath(
path: 'resource/:id',
parent: _parent.RoutePaths.resources
);
В приведенном выше фрагменте вы можете видеть, что я ожидаю, что RouterState будет иметь параметр запроса id
, как это предлагается в документации AngularDart.Это позволяет мне сделать что-то вроде этого: http://localhost/#/resources/resource/1
Этот путь маршрутизатора затем используется в resources/resources_routes.dart
:
static final resource = RouteDefinition(
routePath: ResourcesRoutePaths.resource,
component: my_resource_template.MyResourceComponentNgFactory,
);
static final all = <RouterDefinition>[ resource ];
Все это работает, почти.Когда я перехожу на URL /resources/resource/1
, я действительно вижу правильный вывод HTML из my_resource_component.html
, поэтому я знаю, что Angular Routing работает до этого момента.Кикер пытается получить /1
в качестве параметра запроса с именем «id».
В документации к нему говорится, что мне нужно расширить компонент с помощью OnActivate, который зависит от жизненного цикла приложения.,Поэтому я делаю это и добавляю следующий метод к контроллеру:
@Component(...)
class MyResourceComponent extends OnActivate {
...
@override
OnActivate (RouterState _, RouterState current) {
Console().log(current.queryParameters.isEmpty);
}
}
Приведенный выше код выводит true
.Как и в запросе, параметры пусты.Я следовал инструкциям, и на данный момент я не знаю, что мне не хватает.Кто-то знает, почему это может произойти, или если я пропускаю явный шаг?