Параметры Dart Angular Route не работают - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь заставить маршрутизацию 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.Как и в запросе, параметры пусты.Я следовал инструкциям, и на данный момент я не знаю, что мне не хватает.Кто-то знает, почему это может произойти, или если я пропускаю явный шаг?

...