Angular路由组件无需在模块声明即可加载是否为合理用法?
关于Angular路由组件无需声明即可加载的问题解答
- 你观察到的现象是Angular 14及以上版本的正式特性,并非记忆偏差:这个特性叫做独立组件(Standalone Components)。
- 只有标注了
standalone: true的独立组件才可以不在任何NgModule的declarations数组中声明,独立组件本身是自包含的,自身的imports字段就可以声明依赖,不需要绑定到任何NgModule即可直接使用。 - 针对是否可以移除所有路由对应组件的declarations声明,分两种情况:
- 如果你所有路由对应组件都配置为独立组件,完全可以移除,路由模块会自动处理独立组件的加载和解析逻辑
- 如果是传统的非独立组件,仍然必须在所属
NgModule的declarations中声明,且路由所在模块需要引入对应组件所属的NgModule才能正常加载,否则会抛出组件未声明的异常
- 你验证示例中的cat组件默认配置了
standalone: true,所以才可以不声明直接通过路由加载。
内容的提问来源于stack exchange,提问作者Udi Mazor
相关产品推荐
相关产品推荐

