Я создал родительский компонент, который использует дочерний компонент внутри. Моя цель состоит в том, чтобы родительский компонент использовал мой дочерний компонент API, но у меня были проблемы. Ниже мой код уточняется/сокращается до соответствующих областей.@Query не находит ссылку на компонент
class TripStop {}
@Component({
selector: 'route-map'
})
@View({
template: '...'
})
class RouteMap {
setRoute(route: TripStop[]) {
// Set the route!
}
}
@Component({
selector: 'route-plan'
})
@View({
template: `
<div>
...
<route-map></route-map>
</div>
`,
directives: [RouteMap]
})
class RoutePlan {
private stops: TripStop[];
private maps:QueryList<RouteMap>;
constructor(@Query(RouteMap) maps:QueryList<RouteMap>) {
this.maps = maps;
}
public addStop() {
this.stops.push(new TripStop());
var routeMapComponent = this.maps.first; // This evaluates to undefined.
routeMapComponent.setRoute(this.stops);
}
}
До сих пор мне не удалось получить ссылку на компонент детской карты маршрута в моем компоненте плана маршрута. Из того, что я читал на Angular 2.0 documentation, кажется, что я должен использовать декоратор @Query
, чтобы ввести ссылку на любые дочерние компоненты, соответствующие запросу (как объекты ComponentRef
).
Я попытался использовать тип компонента в запросе @Query(RouteMap)
и добавить ссылку на мой элемент карты <route-map #myMap></route-map>
, затем запросив с помощью этого @Query('myMap')
.
Смутно мне удалось обработать декоратор @ViewQuery
и вернуть ссылку на элемент DOM с недостаточной картой, добавив ссылку на мой элемент & с использованием этого, как описано выше. Это мне не очень помогает, поскольку я предпочитаю общаться с моим компонентом через его API, а не изменять его DOM - однако, я думаю, это указывает на то, что общая проводка моего приложения работает должным образом.
Что мне здесь не хватает?
EDIT: Я использую версию 2.0.0-alpha.37
.