当前位置: 代码网 > it编程>前端脚本>AngularJs > Angular 模块封装概念常见的错误分析理解

Angular 模块封装概念常见的错误分析理解

2024年05月18日 AngularJs 我要评论
angular引入模块封装概念angular 以类似于 es 模块的方式引入了模块封装的概念。它基本上意味着可声明的类型——组件、指令和管道——只能由在

angular引入模块封装概念

angular 以类似于 es 模块的方式引入了模块封装的概念。

它基本上意味着可声明的类型——组件、指令和管道——只能由在该模块内声明的组件使用。

例如,如果我尝试使用下面的代码在 app 模块的 app 组件内使用 a 模块中的 a-comp

@component({
  selector: 'my-app',
  template: `
      <h1>hello {{name}}</h1>
      <a-comp></a-comp>
  `
})
export class appcomponent { }

错误消息

template parse errors: ‘a-comp’ is not a known element

这是因为 app 模块中没有声明 a-comp。 如果我想使用这个组件,我需要导入定义这个组件的模块。解决方案如下:

@ngmodule({
  imports: [..., amodule]
})
export class appmodule { }

这就是封装发挥作用的地方:a 模块必须通过将 a-comp 添加到 exports 数组来将其声明为在其他 module 内可用:

@ngmodule({
  ...
  declarations: [acomponent],
  exports: [acomponent]
})
export class amodule { }

大多数 angular 新手认为 providers 也有封装,这种想法是错误的。可以在应用程序内的任何位置访问在任何非延迟加载模块中声明的 providers.

modules hierarchy

关于 imported modules 的最大困惑是开发人员认为这些被导入的 modules 在应用运行时维护了一种层次结构,并且假设导入其他模块的模块成为被导入模块的父模块。

然而,事实并非如此。所有模块在编译阶段合并。因此,导入的模块和导入的模块之间没有层次关系。

所需命名空间之一被定义为默认命名空间。 此命名空间的控制标记不需要前缀。

<view> 标签是必需的,在上面的示例中,核心命名空间在第一行定义。 当然开发人员可以定义任何名称。 例如,为了使标签名称更短,还可以使用 c 而不是 core.

以上就是angular 模块封装概念常见的错误分析理解的详细内容,更多关于angular 模块封装概念分析的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com