Я немного смущен Resolver
s для routes
. Проблема, которую Resolvers решает для меня, заключается в том, что объект присутствует в компоненте во время рендеринга. Если бы я сделать это без резольверов и начать выборку объектов в конструктору компоненте через Promise, доступ к его вложенным свойствам в шаблоне какАсинхронный доступ к разрешенным данным в Angular2
{{myObj.foo.bar}}
может привести к ошибке, если обещание не решает достаточно рано, что весьма вероятно, когда нужно выполнить HTTP-запрос. Тем не менее, мало информация о получении разрешенных объектов из распознаватель говорит мне, чтобы сделать это, как это в конструкторе компонента
this.route.data.subscribe(val => {...});
Не это же дерьмо, как и раньше? Хорошо, я признаю, что бэкэнд-запрос уже завершен, и я получу подписку в кратчайшие сроки. Тем не менее я снова обрабатываю разрешенные данные асинхронно. Может быть очень высокий шанс, что {{myObj.foo.bar}} доступен при рендеринге шаблона, но нет гарантии, не так ли?
Я не знаю, вижу ли я это слишком критично. Это ощущение, что использование маршрута canActivate
для маршрута и установка разрешенного объекта к службе, которая, в свою очередь, может быть доступна любым компонентом, синхронно приближается к моему намерению.
Ждет уточнения
Там нет никакой гарантии, когда он приедет, просто использовать проверку безопасности 'myObj .foo .bar', Когда значение, наконец, попадет туда, оно будет повторно. –
Вот чего я хочу избежать. Использование десятков "?" операторов в моем шаблоне. Кроме того, оператор означает, что объект является необязательным. Однако на странице профиля пользователя его номер телефона может быть необязательным, но пользовательский объект НЕ является необязательным, он является обязательным. – Matt