FresherKỹ thuậtAngular
Signal trong Angular là gì và đọc, cập nhật nó như thế nào?
Thử trả lời trước
Đáp án mẫu
Signal là một vật chứa giá trị và báo cho Angular biết khi nó thay đổi. Bạn tạo bằng signal(initialValue), đọc bằng cách gọi nó như một hàm, và ghi bằng set hoặc update.
import { signal } from '@angular/core'
const count = signal(0)
console.log(count()) // 0
count.set(5)
count.update((n) => n + 1)
console.log(count()) // 6
set(value)thay thế giá trị.update(fn)tính giá trị mới từ giá trị cũ.asReadonly()trả về một bản chỉ đọc để expose từ service.
Trong template bạn viết {{ count() }}. Angular ghi nhận rằng template đã đọc signal, nên khi count đổi nó biết chính xác view nào cần làm mới. Đó gọi là fine-grained reactivity, và là điều khiến zoneless change detection khả thi.
Signal phù hợp cho state và các giá trị suy ra bằng computed.
Luôn đọc signal bằng cặp ngoặc, và cập nhật bằng set hoặc update.
Ý chính
- Tạo bằng signal(), đọc bằng cách gọi nó
- Ghi bằng set hoặc update
- Template theo dõi những signal mà nó đọc
- asReadonly expose state một cách an toàn
Câu hỏi nối tiếp thường gặp
- Signal khác một property thông thường của class như thế nào?
Lỗi thường gặp
- Quên cặp ngoặc và render ra chính hàm signal
- Sửa trực tiếp object trong signal mà không set giá trị mới