Согласно Angular.io docs, существует 7 стратегий обнаружения изменений: CheckOnce, Checked, CheckAlways, Individual, OnPush, Default, OnPushObserve Я здесь noob, поэтому мне очень сложно понять. Может кто-нибудь объяснить мне различие между ними. Спасибо!Как отличаются стратегии обнаружения изменений?
ответ
Не строгий ответ на вопрос, но все же может указать человек в правильном направлении:
Видимо есть только две стратегии обнаружения, которые должны использоваться потребителями угловых рамок: По умолчанию и OnPush.
Другие механизмы используются только внутри Углового. Для получения дополнительной информации проверьте this поток от репо Angular.
Небольшое уточнение, которое может быть полезным для других относительно OnPush стратегия:
При использовании стратегии OnPush изменения подбирают автоматически только если Неизменный объект обновляется снаружи (строка 53 в примере ниже).
Если «@Input()
property» находится в , обновляется внутри компонента, тогда нам нужно сообщить об изменении извещателя, что у нас есть изменения, чтобы компонент отражал новые значения. Мы делаем это, используя .markForCheck
, который will mark all ChangeDetectionStrategy ancestors as to be checked (строка 30 в примере ниже).
Вот пример: http://plnkr.co/edit/bp00rvDgAp8ljTLJEmHI?p=preview (обновлено и раздвоенный от http://plnkr.co/edit/oT8F8m?p=preview)
Поиграйте с линией 30:
// this.ref.markForCheck(); // uncomment it to manually apply changes
Если линия закомментирована мы не увидим компонент обновленный с значения, установленные таймаутом внутри конструктора компонента (строка 24).
Мы увидим только обновленный компонент со значениями, установленными таймаутом вне компонента (строка 53).
Как только мы раскомментируем строку, компонент обновляется со значениями, установленными таймаутом внутри компонента.
- 1. контрольная сумма обнаружения изменений
- 2. livequery для обнаружения изменений dom
- 3. (Closed) BindingSource обнаружения изменений вопрос
- 4. Сброс обнаружения изменений исходного файла
- 5. Использование Angular2 Механизм обнаружения изменений
- 6. обнаружения изменений выбора в WebView
- 7. Быстрый алгоритм обнаружения изменений изображения
- 8. MySQL триггер для обнаружения изменений
- 9. Entity Framework POCO Стратегии отслеживания изменений
- 10. Angular2 Событие для обнаружения изменений для директивы
- 11. NSNotification - правильный выбор для обнаружения изменений?
- 12. Наиболее эффективный метод обнаружения/мониторинга изменений DOM?
- 13. Функция обнаружения изменений в упорядоченном списке
- 14. Лучший способ петли для обнаружения изменений
- 15. Функция Best Hash для обнаружения изменений данных?
- 16. Почему нет прошивки для обнаружения изменений модели?
- 17. «Слушатель» для обнаружения изменений на значке мыши
- 18. Имеет ли груз возможность обнаружения изменений источника?
- 19. Сравнение двух IEnumerable для обнаружения изменений
- 20. Использование котировок F # для обнаружения изменений кода
- 21. Обновление шаблона обнаружения изменений в Angular2
- 22. Watchify обнаружения изменений, но выход не меняется
- 23. use change() для обнаружения изменений значения атрибута
- 24. Эффективный способ обнаружения изменений в элементах структуры?
- 25. Получение углового обнаружения изменений в $ scope
- 26. Событие jQuery для обнаружения изменений позиции элемента
- 27. (Быстрый) способ обнаружения изменений на экране
- 28. jgit для обнаружения конфликтов до слияния и применения стратегии слияния
- 29. Стратегии обнаружения и удаления беспорядочных скоплений точек GPS?
- 30. Данные, обязательный для шаблона с по стратегии обнаружения нажимного
Я могу порекомендовать этот пост (http://victorsavkin.com/post/110170125256/change-detection-in-angular-2), который частично охватывает эту тему. Помимо этого, я бы рекомендовал прочитать документацию на угловом исходном коде. Я бы начал с [здесь] (https://github.com/angular/angular/blob/master/modules%2Fangular2%2Fsrc%2Fcore%2Fchange_detection%2Fchange_detector_ref.ts) –
См. Также http://stackoverflow.com/questions/34710493/Что-разностной-между-onpushobserve-и-OnPush-в-angular2 –