FresherKỹ thuậtAngular
NgModule là gì và vì sao các app Angular mới bỏ qua nó?
Thử trả lời trước
Đáp án mẫu
NgModule là một class có decorator @NgModule, gom các component, directive và pipe (declarations), những thứ chúng cần (imports) và những thứ chúng chia sẻ (exports). Trước khi có standalone component, mỗi component phải thuộc về đúng một module.
@NgModule({
declarations: [UserCard],
imports: [CommonModule],
exports: [UserCard],
})
export class UserModule {}
App mới bỏ qua module vì standalone component tự liệt kê dependency trong imports, đơn giản hơn:
- Ít boilerplate và không còn câu hỏi "module nào khai báo cái này?".
- Tree-shaking và lazy loading theo từng component tốt hơn.
- Dễ đọc hơn, vì component cho thấy mọi thứ nó dùng.
Từ Angular 19, component mặc định là standalone. Muốn khai báo trong NgModule bạn phải viết standalone: false. Bạn vẫn sẽ gặp NgModule trong code cũ và một số thư viện, và hai kiểu này dùng chung được.
Hãy viết standalone component và học NgModule để đọc code legacy.
Ý chính
- NgModule gom declarations, imports và exports
- Standalone component tự khai báo imports
- Component mặc định là standalone từ v19
- Hai kiểu có thể cùng tồn tại khi migrate
Câu hỏi nối tiếp thường gặp
- Bạn dùng một thư viện dựa trên NgModule từ standalone component như thế nào?
Lỗi thường gặp
- Khai báo standalone component trong mảng declarations của NgModule
- Tưởng NgModule đã bị xóa khỏi Angular