Angular
约 4 分钟阅读
- 如果想要实现默认的嵌套多级路由,并且希望将路由定义在别的地方,似乎只能使用 loadModule 来实现
- 内容映射可以使用
ng-content实现- 例如
<ng-content select="header"></ng-content>
- 例如
- angular-cli.jsonGitHubangular/angular-cli/wiki/angular-cli如果想要实现默认的嵌套多级路由,并且希望将路由定义在别的地方,似乎只能使用 loadModule 来实现 · 内容映射可以使用 实现 · 例如 · angular-cli.json · ngrx/store · Angular Weekly Meeting Notes笔记:Angular
- ngrx/storeGitHubngrx/store
- Angular Weekly Meeting NotesLinkg.co/ng/weekly-notes如果想要实现默认的嵌套多级路由,并且希望将路由定义在别的地方,似乎只能使用 loadModule 来实现 · 内容映射可以使用 实现 · 例如 · angular-cli.json · ngrx/store · Angular Weekly Meeting Notes笔记:Angular
- Angular Universal DesignLinkdocs.google.com/document/d/1eGEq0N7czS8nWWuCV3n4eMF3GFzk88rsN0bll6yE0bE/edit?usp=sharing如果想要实现默认的嵌套多级路由,并且希望将路由定义在别的地方,似乎只能使用 loadModule 来实现 · 内容映射可以使用 实现 · 例如 · angular-cli.json · ngrx/store · Angular Weekly Meeting Notes笔记:Angular
- AuguryGitHubrangle/augury
- Angular Debugging and Visualization Tools
- 相关资源
- Angular resources
- CDK
- What is
cdkin Angular Material 2 componentsLinkstackoverflow.com/q/42340649/1870054如果想要实现默认的嵌套多级路由,并且希望将路由定义在别的地方,似乎只能使用 loadModule 来实现 · 内容映射可以使用 实现 · 例如 · angular-cli.json · ngrx/store · Angular Weekly Meeting Notes笔记:Angular - component dev kit
- A first look into the Angular CDKLinkmedium.com/@caroso1222/a-first-look-into-the-angular-cdk-67e68807ed9b如果想要实现默认的嵌套多级路由,并且希望将路由定义在别的地方,似乎只能使用 loadModule 来实现 · 内容映射可以使用 实现 · 例如 · angular-cli.json · ngrx/store · Angular Weekly Meeting Notes笔记:Angular
- Angular Pro Tip: How to dynamically create components in bodyLinkmedium.com/@caroso1222/angular-pro-tip-how-to-dynamically-create-components-in-body-ba200cc289e6如果想要实现默认的嵌套多级路由,并且希望将路由定义在别的地方,似乎只能使用 loadModule 来实现 · 内容映射可以使用 实现 · 例如 · angular-cli.json · ngrx/store · Angular Weekly Meeting Notes笔记:Angular
- 提供接口供
Portal和PortalHost动态实例化 Portal- 注入到其他地方的部分 UI 组件,
Component,TemplateRef
- 注入到其他地方的部分 UI 组件,
PortalHost- 渲染
Portal的地方 DOMPortalHost
- 渲染
- What is
- NOTES:
- 目前没有比较好的退出登录 ICON, power_settings_new 算是最接近的了
- #71GitHub Issuegoogle/material-design-icons#71
- Angular 9 默认 Ivy
- 目前没有比较好的退出登录 ICON, power_settings_new 算是最接近的了
npm install -g @angular/cli
ng new my-appPackages@angular/clinpm Package@angular/cliNPM
// 处理 window 的事件
// window 还可以为
// document, window, body
// https://github.com/angular/angular/blob/3412aba46e387b234d72e9194e2308f1d71a62df/modules/angular2/src/platform/server/parse5_adapter.ts#L533
@HostListener('window:resize', ['$event'])
onResize(event) {
event.target.innerWidth;
}
// 绑定 host 上的 class
@HostBinding('class.someClass') someField: boolean = false;# 全局安装 ng
# 或者 npm i -g @angular/cli
yarn global add @angular/cli
# 如果全局路径不在 PATH 中可以添加以下命令输出的路径
yarn global bin
# 或者直接运行
$(yarn global bin)/ng
# 修改现有项目的样式类型
ng set defaults.styleExt scss
# 如果出现无法处理 css 的异常, 则修改 angular-cli.json 中的 "styles":["styles.css"] 为 "styles":["styles.scss"]
# 生成项目时使用 scss
ng new my-roject --style=scss
# 在当前目录,生成路由,添加 ServiceWorker
ng new --routing -sw --style scss -dir . proj
ng add @angular/pwa
ng add @angular/material
ng add @angular/elements
ng generate @angular/material:material-nav --name=my-nav
ng generate @angular/material:material-dashboard --name=my-dashboard
ng generate @angular/material:material-table --name=my-table
# 查看压缩情况
source-map-explorer dist/main.bundle.jsPackages@angular/clinpm Package@angular/cliNPM
Notes
- ng-container
- ngTemplateOutlet
*ngTemplateOutlet="customTemplate ? customTemplate: defaultTemplate"
- 模板容器
- ngTemplateOutlet
- ng-template
- 模板定义
- 可以被引用
- 默认不会显示, 可以由结构指令控制
- 代码引用
@ViewChild('defaultTabButtons')
defaultTabButtonsTpl: TemplateRef<any>;SSR
UI 组件
- angular/flex-layoutGitHubangular/flex-layout
yarn add @angular/flex-layout- API DocumentationGitHubangular/flex-layout/wiki/API-Documentation
- Onsen UI for Angular 2+
- Create beautiful high-quality hybrid mobile apps the fastest way with Angular 2+ or AngularJS 1 and Onsen UI Framework.
- Teradata/covalentGitHubTeradata/covalent
- Covalent: UI Platform based on Angular-Material
- PrimeNG
- The Most Complete User Interface Suite for Angular
- primefaces/primengGitHubprimefaces/primeng
- vmware/clarityGitHubvmware/clarity
- UX guidelines, HTML/CSS framework, and Angular components working together to craft exceptional experiences
- clarity.design
- swimlaneGitHub Orgswimlane
- ngx-charts
- ngx-datatable
- ngx-dad
- valor-software/ng2-treeGitHubvalor-software/ng2-tree
- akserg/ng2-dndGitHubakserg/ng2-dnd
- 更好用
Material
- Angular Material
- 注意官方的字体是使用的谷歌在线字体, 建议下载下来本地托管
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">- 下载 google/material-design-icons/iconfontGitHub Filegoogle/material-design-icons/iconfont
- 设计规范 google.github.io/material-design-icons
- 在线搜索 material.io/icons
- 也可以安装
material-design-icons来使用- 该模块非常大 (~60M), 因为会下载整个仓库
<i class="material-icons">face</i>
- 当分模块时, 可能每个模块都要导不同的 md 组件, 官方建议用一个自己的 Md 模块, 导入需要的, 然后导入该模块即可
- 已知问题
- 不支持滚动事件
- #13048GitHub Issueangular/angular#13048
- 不支持 Native
- #3386GitHub Issueangular/material2#3386
- Data Table
- #581 md-data-tableGitHub Issueangular/material2#581
- #5885 sticky headersGitHub Issueangular/material2#5885
- 不支持滚动事件
- _elevation
yarn add @angular/material @angular/cdk
yarn add @angular/animations
yarn add hammerjsPackages@angular/materialnpm Package@angular/materialNPM@angular/cdknpm Package@angular/cdkNPM@angular/animationsnpm Package@angular/animationsNPMhammerjsnpm PackagehammerjsNPM
Covalent
- Teradata/covalentGitHubTeradata/covalent
- Covalent: UI Platform based on Angular-Material
- 基于 Angular/Material
yarn add @covalent/core
## (optional) Additional Covalent Modules installs
yarn add @covalent/http @covalent/highlight @covalent/markdown @covalent/dynamic-formsPackages@covalent/corenpm Package@covalent/coreNPM@covalent/httpnpm Package@covalent/httpNPM@covalent/highlightnpm Package@covalent/highlightNPM@covalent/markdownnpm Package@covalent/markdownNPM@covalent/dynamic-formsnpm Package@covalent/dynamic-formsNPM
GraphQL
yarn add apollo-angular
yarn add apollo-angular apollo-angular-link-http apollo-client apollo-cache-inmemory graphql-tag graphqlPackagesapollo-angularnpm Packageapollo-angularNPMapollo-angular-link-httpnpm Packageapollo-angular-link-httpNPMapollo-clientnpm Packageapollo-clientNPMapollo-cache-inmemorynpm Packageapollo-cache-inmemoryNPMgraphql-tagnpm Packagegraphql-tagNPMgraphqlnpm PackagegraphqlNPM
开发规范
- Style Guide
- 官方规范手册
- Architecture Overview
- 架构概览
- 标准目录结构
/e2e- 测试相关
/src/app- 应用代码主目录
/shared- 全局公共组件
/pages- 全局公共页面
/<模块>- 自定义模块
/shared- 自定义模块下的共享组件
/<组件>- 自定义模块下的组件
/assets- 资源
- 例如图片
- 资源
/environments- 环境配置
- 生产,开发,测试
main.ts- 入口
polyfills.ts- 添加 Polyfills 的地方
styles.scss- 全局样式, 添加主题的地方
- 组件命名
- 页面建议使用
page-的前缀
- 页面建议使用
NOTES
- 主要注解
@ContentChild@ContentChildren@HostBinding@HostListener@Input@Output@ViewChild@ViewChildren@Component@Directive@Pipe
Component,Directive和Pipe注解不支持继承- AOT 后, 组件的元数据是不存在的
代码分析
组件通讯
@Input属性绑定@Output对外事件触发, 多为 EventEmitter@Input+@Output可以组成双向绑定@ViewChild可以将引用到的组件直接注入, 可以直接操作组件方法- 基于 Service 进行通讯
路由
- 路由的内容会在
<router-outlet>标签中显示 - 路由可以做多级
APF
- Angular Package Format
- FESM - "flattened" ES module - bundle
关联信息
反向链接和本文引用的外部资料。
References
GitHub
18 条- Teradata/covalentgithub.com/Teradata/covalent
- akserg/ng2-dndgithub.com/akserg/ng2-dnd
- angular/angular-cli/wiki/angular-cligithub.com/angular/angular-cli/wiki/angular-cli
- angular/angular#13048github.com/angular/angular/issues/13048
- angular/flex-layoutgithub.com/angular/flex-layout
- angular/flex-layout/wiki/API-Documentationgithub.com/angular/flex-layout/wiki/API-Documentation
- angular/material2/src/lib/core/style/_elevation.scssgithub.com/angular/material2/blob/5.1.x/src/lib/core/style/_elevation.scss
- angular/material2#3386github.com/angular/material2/issues/3386
另有 10 个未显示 references。
其他外链
22 条- angular.io/api/common/NgTemplateOutletangular.io/api/common/NgTemplateOutlet
- angular.io/guide/angular-package-formatangular.io/guide/angular-package-format
- angular.io/guide/architectureangular.io/guide/architecture
- angular.io/guide/component-interactionangular.io/guide/component-interaction
- angular.io/guide/styleguideangular.io/guide/styleguide
- angular.io/resourcesangular.io/resources
- blog.angular-university.io/angular-ng-template-ng-container-ngtemplateoutletblog.angular-university.io/angular-ng-template-ng-container-ngtemplateoutlet
- clarity.designclarity.design/
另有 14 个未显示 references。
另有 24 个 references 未显示。