Как получить параметры маршрута в выражении с помощью AngularDart?
Я пытаюсь перейти непосредственно от URL, управляемого маршрутом, к значению атрибута. Какой самый простой способ сделать это?
У меня есть маршрут, который выглядит так:
..addRoute(
name: 'activities',
path: '/activities',
enter: view('views/activities.html'),
mount: (Route route) => route
..addRoute(
name: 'view',
path: '/:activityId',
enter: view('views/activity.html')));
Я ожидаю, что сработает следующее:
/activities
/activities/f4f3j4093j4f
Содержание views/activity.html
:
<activity-photo activity-id="{{how to get this? I have it in the route}}"></activity-photo>
Как вы можете видеть, мое представление - это просто пользовательский элемент с одним пользовательским атрибутом. Могу ли я заполнить этот пользовательский атрибут непосредственно из route param?1 ответ:
Для любого компонента/директивы/контроллера внутри представления вы можете попросить ввести
RouteProvider
, который имеетparameters
поле (карту).@NgComponent( selector: 'activity-photo', ...) class ActivityPhotoComponent { ActivityPhotoComponent(RouteProvider routeProvider) { String activityId = routeProvider.parameters['activityId']; _loadActivity(activityId); } }
Это немного отличается от того, как вы указываете в своем примере. Использование здесь было бы:
<activity-photo></activity-photo>
И фотография активности найдет идентификатор активности самостоятельно.
В качестве альтернативы, вы можете создать контроллер для представления, но я думаю, что вам нужно будет обернуть шаблон другим тегом... Пример:
<div id="activity-view"> <activity-photo activity-id="ctrl.activityId"></activity-photo> </div>
.
@NgController( selector: '#activity-view', publishAs: 'ctrl') class ActivityViewController { String activityId; ActivityViewController(RouteProvider routeProvider) { String activityId = routeProvider.parameters['activityId']; } }