Самый крупный релиз с момента первоначального развертывания Angular
Угловые сигналы
(предварительная версия для разработчиков, все еще в разработке)
Позволяет разработчику определять значения Reactive и предоставлять зависимости для их обновления.
На данный момент Angular использует Zone.JS для обнаружения изменений, но функция Angular Signals сделает Zone.js необязательным в будущих выпусках.
Сигналы — это примитивная реактивная система в Angular. Это означает, что Сигналы можно использовать как в компоненте, так и вне сервисов.
Преимущества-
На данный момент обнаружение изменений полностью контролируется и выполняется Zone.JS автоматически. Благодаря использованию сигналов Angular разработчик получит больший контроль над реактивностью и обнаружением изменений.
В комплекте с @angular/core
//create variables with signal count = signal<number>(0); // Signals are getter functions - calling them reads their value. console.log('The count is: ' + count()); // To change the value of a writable signal, you can either .set() it directly: count.update(value => value + 1); const todos = signal([{title: 'Learn signals', done: false}]); todos.mutate(value => { // Change the first TODO in the array to 'done: true' without replacing it. value[0].done = true; });
RxJS-совместимость
Легко «поднять» сигналы к наблюдаемым, используя функции из @angular/core/rxjs-interop
import { toObservable, signal } from '@angular/core/rxjs-interop'; @Component({...}) export class App { count = signal(0); count$ = toObservable(this.count); ngOnInit() { this.count$.subscribe(() => ...); } }
Вычислено
Вычисленные сигналы позволяют создавать производные сигналы из других сигналов зависимости.
const person = signal<{ firstname: string; lastname: string}>({ firstname: 'Anil', lastname: 'Verma'}) // Automatically updates when person() change; const presentation = computed(() => ${person().firstname}${person().lastname}`;