Angular реализует двустороннюю реактивность данных
через систему Change Detection, которая автоматически
отслеживает изменения и обновляет DOM без ручного вмешательства.
NgZone) — отслеживает
события браузера, таймеры, промисы и другие асинхронные операции.Пример автоматического обновления с использованием
ngModel:
<input [(ngModel)]="username" placeholder="Введите имя">
<p>Привет, {{username}}!</p>
Здесь любое изменение значения username автоматически
отображается в <p> без дополнительных обработчиков
событий.
@Input) или событиях внутри компонента. Позволяет
оптимизировать производительность.Пример использования OnPush:
@Component({
selector: 'app-user',
changeDetection: ChangeDetectionStrategy.OnPush,
template: `<p>{{user.name}}</p>`
})
export class UserComponent {
@Input() user: { name: string };
}
В этом режиме компонент обновляется только если объект
user изменится на новый экземпляр, что снижает количество
проверок.
Angular поддерживает обновление через Observables:
@Component({
selector: 'app-clock',
template: `<p>Текущее время: {{time$ | async}}</p>`
})
export class ClockComponent {
time$ = interval(1000).pipe(map(() => new Date().toLocaleTimeString()));
}
async подписывается на поток данных и
автоматически обновляет шаблон при каждом новом значении.Использование реактивного подхода позволяет строить интерфейсы, полностью синхронизированные с данными, без ручного контроля обновлений и рендеринга.