2016-01-07 3 views
1

Скажем, у меня есть вложенные маршруты, например, так:Угловой 2 поддерживает асинхронную инъекцию?

/products/:productId/parts/:partId 

Две компоненты созданы ProductComponent и PartComponent.

В компоненте продукта я делаю http.get('/api/products/' + productId), который возвращает объект продукта. Мне было бы очень приятно, если бы я мог настроить инжектор, чтобы PartComponent разрешался только после того, как продукт был доступен, и продукт был передан в конструктор. Является ли это возможным?

Если нет, то каковы мои варианты доступа к извлеченному продукту от PartComponent?

ответ

0

Вы можете использовать завод, который возвращает обещание. В конструкторе вы получаете произведение или null с myFactory.then(). Но лучший способ - просто ввести услугу и запросить ее для продукта. Я не вижу способа передать идентификатор продукта инжектору.

+0

Если я попрошу услугу вернуть мне продукт снова. Это означает, что будут отправлены 2 запроса, по одному от каждого компонента. Тогда мне нужно задействовать кеширование, правильно? – Kugel

+0

Да, я думаю, это самое простое решение. Некоторое кэширование, вероятно, не повредит. В компоненте детали вы можете вставить родительский элемент и прочитать его свойство «component», но он вводит связь, а также должен возвращать обещание, потому что он еще не может быть установлен при доступе к нему из части. –

Смежные вопросы