Pull to refresh

Comments 3

Вдохновляюсь каждый раз читая ваши статьи. И каждый раз удивляюсь насколько плохо, оказывается, я знаю Ангуляр, хотя работаю с ним каждый день.
В статье упомянут кейс с markForCheck, который повлияет только на родителя. А какой верный способ, чтобы обновить все компоненты по дереву view?

Привет! Спасибо на добром слове ? Я бы организовал такую ситуацию через общий Observable сервис, объявленный где-то сверху, чтобы у всех необходимых view был до него доступ и через него бы обновлял всё, что надо обновить. Другой вариант — делать у компонентов публичный метод refresh, достукиваться как-то до них и вызывать его. Стоит отметить, что через @View/ContentChild(ren) достучаться сразу до ChangeDetectorRef через read нельзя:
https://github.com/angular/angular/issues/34347

Ещё для решения задачи связки шаблона и компонента который его использует (шаблон передается в компонент через инпут) можно использовать hostDirectives, на контейнере, который соберет своих детей. А внутри компонентов уже можно без проблем обратиться к директиве контейнера и взять что необходимо. Конечно это хорошо работает, когда контейнер внутри себя имеет лишь одну подобную связку, иначе придется создавать дополнительные контейнеры. hostDirectives в данном случае избавит от необходимости каждый раз вешать директиву на компонент в разметке. А реализация подобного механизма связки через директиву даст простоту создания контейнеров. О проблеме применения директивы к нескольким связкам компонентов и шаблонов можно сообщать предупреждением или ошибкой с сообщением о необходимости разделения.

Sign up to leave a comment.