@meshmakers /共享服务
Angular库提供通用的应用服务,用于消息传递、导航、面包屑和HTTP错误处理。
部分 @meshmakers 包的生态系统。
构建和测试
# Build
npm run build:shared-services
# Lint
npm run lint:shared-services
# Run tests
npm run test:shared-services
体系结构
shared-services/
├── src/
│ ├── public-api.ts
│ └── lib/
│ ├── services/
│ │ ├── message.service.ts # Notification messages
│ │ ├── app-title.service.ts # Application title management
│ │ ├── bread-crumb.service.ts # Breadcrumb navigation
│ │ ├── command.service.ts # Drawer navigation
│ │ ├── command-base.service.ts # Navigation base class
│ │ ├── command-settings.service.ts # Navigation configuration base
│ │ ├── component-menu.service.ts # Component context menus
│ │ └── error-message.utils.ts # Error message transformation
│ ├── shared/
│ │ └── mm-http-error-interceptor.service.ts # HTTP error handling
│ ├── models/
│ │ ├── notification-message.ts # Message model
│ │ ├── commandItem.ts # Navigation item model
│ │ ├── breadCrumbData.ts # Breadcrumb model
│ │ ├── breadCrumbRouteItem.ts # Route breadcrumb config
│ │ ├── pagedResultDto.ts # Paged result DTO
│ │ ├── treeItemData.ts # Tree node model
│ │ ├── apiErrorDto.ts # API error model
│ │ └── failedDetailsDto.ts # Error details model
│ ├── data-sources/
│ │ └── entity-select-data-source.ts # Entity autocomplete interface
│ ├── options/
│ │ └── commandOptions.ts # Command configuration
│ └── compat/ # Backward compatibility
│ ├── data-source-base.ts # Legacy DataSourceBase
│ ├── iso-date-time.ts # Legacy date utilities
│ ├── qr-code-scanner.service.ts # QR code scanner
│ ├── error-message.ts # Legacy error model
│ └── auto-complete-data-source.ts # Legacy autocomplete
服务
| 服务 | 描述 |
|---|---|
MessageService | 带有错误历史记录的面向用户的通知(错误、警告、信息、成功) |
AppTitleService | 响应式应用程序标题管理 |
BreadCrumbService | 从路由配置自动生成面包屑 |
CommandService | 抽屉导航管理与Kendo DrawerItem集成 |
CommandSettingsService | 应用程序导航配置的基类 |
ComponentMenuService | 来自路由数据的组件级上下文菜单 |
拦截器
| 拦截器 | 描述 |
|---|---|
MmHttpErrorInterceptor | 处理HTTP错误(网络错误,403拒绝访问,API 400/409错误详细信息,403) application/problem+json 拒绝用他们的 title/detail);显示他们自己的错误吐司检查的调用者 MmHttpErrorInterceptor.reportsToUser(error) 第一个 |
模型
| 模型 | 描述 |
|---|---|
NotificationMessage | 带有级别、消息、详细信息、时间戳的消息 |
CommandItem | 导航项链接/href/onClick,可见性,子 |
BreadCrumbRouteItem | 路由面包屑配置标签/url/图标 |
BreadCrumbData | 剑道兼容面包屑项目 |
PagedResultDto | 使用skip/take/totalCount/list分页结果 |
TreeItemData | 树节点接口 |
EntitySelectDataSource | 用于实体自动完成数据源的接口 |
快速入门
// app.config.ts
import { provideMmSharedServices, MmHttpErrorInterceptor } from '@meshmakers/shared-services';
import { HTTP_INTERCEPTORS } from '@angular/common/http';
export const appConfig: ApplicationConfig = {
providers: [
provideMmSharedServices(),
{ provide: HTTP_INTERCEPTORS, useClass: MmHttpErrorInterceptor, multi: true }
]
};
详细的文档
看到 文档/ README.md 获取完整的API参考以及所有服务的使用示例。
依赖关系
- 角21 (core, common/http, router)
- RxJS (行为主体,主体,可观察性)
- @progress / kendo-angular-layout (DrawerItem)
- @progress / kendo-angular-menu (子菜单)
- @progress / kendo-angular-navigation (BreadCrumbItem)
- @progress / kendo-svg-icons (SVGIcon)
文件和测试标准
- 所有开发人员文档必须用英语编写
- 每次代码更改都必须包含更新的文档 -更新自述文件。医学博士,文档/ README。在添加、修改或删除功能时使用
- 必须执行单元测试和集成测试 每次代码更改之后
- 必须更新现有的测试 当被测试代码的行为发生变化时
- 必须添加新的测试 当实现新的特性、组件或服务时
- 永远不要提交测试失败的代码