Constructor injection khai báo dependency qua constructor parameters, rõ ràng và quen thuộc.
Ví dụ functional guard dùng inject():
typescript
export const authGuard: CanActivateFn = () => {
const auth = inject(AuthService)
const router = inject(Router)
return auth.isLoggedIn() ? true : router.createUrlTree(["/login"])
}inject() gọn hơn cho guards, resolvers, interceptors hoặc field initializers; chỉ gọi trong injection context hợp lệ.
Constructor injection declares dependencies through constructor parameters and is explicit and familiar.
Example functional guard using inject():
typescript
export const authGuard: CanActivateFn = () => {
const auth = inject(AuthService)
const router = inject(Router)
return auth.isLoggedIn() ? true : router.createUrlTree(["/login"])
}inject() is convenient for guards, resolvers, interceptors or field initializers; call it only in a valid injection context.