mcpField
S
syncfusion-angular-dialog

syncfusion-angular-dialog

github.com/syncfusion开发041 次安装6 天前更新
代码仓库

关于 syncfusion-angular-dialog

这是面向 Angular 开发者的 Syncfusion Dialog 组件技能,涵盖从基础弹窗到表单、无障碍和高级交互的实现参考。组件支持模态与非模态模式,并提供定位、模板和尺寸配置。

主要功能

  1. 01模态与非模态弹窗
  2. 02自定义标题、内容和页脚模板
  3. 03预设及自定义定位
  4. 04动画、拖动与调整大小
  5. 05表单集成和无障碍支持
  6. 06键盘操作与移动端适配

适用场景

  1. 01删除前请求确认
  2. 02在弹窗中收集表单输入
  3. 03展示通知或错误信息
  4. 04构建多步骤流程和设置面板

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/syncfusion/angular-ui-components-skills --skill syncfusion-angular-dialog

安装后在 Claude Code 中输入/syncfusion-angular-dialog确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
accessibility-and-forms.md
advanced-patterns.md
api-reference.md
getting-started.md
interaction-and-events.md
modal-vs-modeless.md
positioning-and-sizing.md
styling-and-customization.md
templates-and-content.md

详细介绍

实现 Dialog

Dialog 组件是一个向用户显示信息并获取用户输入的窗口。它同时支持模态对话框(阻止与父级交互)和非模态对话框(允许与父级交互)。

组件概览

主要功能
  • 模态和非模态模式 - 阻止或允许与父级交互
  • 模板 - 可自定义标题、内容和页脚
  • 定位 - 内置 9 种位置或自定义放置方式
  • 动画 - 流畅的打开/关闭效果(Fade、Zoom、Slide)
  • 可拖动和可调整大小 - 允许用户移动和调整对话框大小
  • 表单集成 - 响应式表单和模板驱动表单
  • 无障碍访问 - 完整支持 WCAG 2.2 AA 级标准及 ARIA
  • 键盘导航 - Tab、Escape、Enter 和方向键
  • 响应式 - 在移动设备上切换为全屏模式

文档和导航指南

需要实现 Dialog 功能时,请参阅以下文档:

入门

📄 阅读: references/getting-started.md

  • 在 Angular 21+ 中安装和设置
  • 基本的对话框实现
  • CSS 导入和主题
  • 打开和关闭对话框
  • 内置按钮支持
对话框模式和类型

📄 阅读: references/modal-vs-modeless.md

  • 模态对话框行为(阻止与父级交互)
  • 非模态对话框行为(允许与父级交互)
  • 使用场景及各模式的适用时机
  • 在不同模式间切换
  • 遮罩层自定义和样式设置
内容和模板

📄 阅读: references/templates-and-content.md

  • 标题模板和自定义
  • 将字符串、HTML 或 ng-template 用作内容
  • 带按钮的页脚模板
  • 使用 ng-content 实现动态内容
  • 按钮绑定和点击事件
  • 动态按钮数组
定位和尺寸

📄 阅读: references/positioning-and-sizing.md

  • 内置位置(9 种位置:顶部、居中、底部等)
  • 使用 X、Y 坐标自定义定位
  • 宽度和高度配置
  • 最小/最大高度限制
  • 针对不同屏幕尺寸的响应式尺寸
  • 在移动设备上切换为全屏模式
样式和自定义

📄 阅读: references/styling-and-customization.md

  • CSS 类自定义(标题、内容、页脚、遮罩层)
  • 主题集成(Material、Bootstrap、Tailwind、Fluent)
  • 深色模式支持
  • 动画效果(Fade、Zoom、SlideLeft、SlideRight 等)
  • 图标自定义(关闭按钮、调整大小的控点)
  • RTL(从右到左)语言支持
无障碍访问和表单

📄 阅读: references/accessibility-and-forms.md

  • 符合 WCAG 2.2 AA 级标准
  • ARIA 属性(aria-labelledby、aria-describedby、aria-modal、aria-grabbed)
  • 键盘导航模式(Tab、Shift+Tab、Escape、Enter)
  • 屏幕阅读器支持和最佳实践
  • 使用 FormValidator 进行表单验证
  • 响应式表单模式
  • 模板驱动表单模式
  • 自定义验证规则和错误处理
交互和事件

📄 阅读: references/interaction-and-events.md

  • 对话框打开/关闭事件
  • 可拖动对话框(允许用户移动对话框)
  • 可调整大小的对话框(允许用户调整大小)
  • 按钮点击事件和处理
  • 内容交互模式
  • 阻止对话框关闭
  • 焦点管理
  • 对话框生命周期事件
高级模式

📄 阅读: references/advanced-patterns.md

  • 嵌套对话框(对话框中打开对话框)
  • 动态加载 Ajax 内容
  • 用于程序化创建的工具函数
  • 复杂布局(富文本编辑器、多步骤表单)
  • 滚动处理和自动居中
  • 自定义事件发送器
  • 路由集成模式
API 参考(完整)

📄 阅读: api-reference.md

  • 完整的 Dialog API 文档
  • 所有有效属性及其类型和示例
  • 所有方法(show、hide、refresh、destroy)
  • 所有事件(beforeOpen、beforeClose、drag、resize 等)
  • 接口和模型(AnimationSettingsModel、ButtonPropsModel 等)
  • 有效枚举(DialogEffect、ResizeDirections)
  • Syncfusion 官方文档链接

快速入门示例

下面是打开基本模态对话框的最简示例:

import { Component, ViewChild } from '@angular/core';
import { DialogModule, DialogComponent } from '@syncfusion/ej2-angular-popups';

@Component({
  selector: 'app-root',
  imports: [DialogModule],
  template: `
    <div id="dialog-container" style="height: 500px;">
      <button class="e-control e-btn" (click)="onOpenDialog()">
        Open Dialog
      </button>
      
      <ejs-dialog 
        #ejDialog
        target="#dialog-container"
        [showCloseIcon]="true"
        width="400px"
        content="This is a Dialog content"
      >
        <ng-template #header>
          <div class="e-dlg-header-content">
            <span>Dialog Title</span>
          </div>
        </ng-template>
      </ejs-dialog>
    </div>
  `
})
export class AppComponent {
  @ViewChild('ejDialog') ejDialog!: DialogComponent;

  onOpenDialog(): void {
    this.ejDialog.show();
  }
}

CSS:

#dialog-container {
  height: 500px;
}

常见模式

模式 1:模态确认对话框
// Create a modal dialog for confirmation
<ejs-dialog 
  [isModal]="true"
  [showCloseIcon]="true"
  width="350px"
  content="Are you sure you want to delete this item?"
>
  <ng-template #footer>
    <button class="e-control e-btn e-primary" (click)="onConfirm()">
      Yes, Delete
    </button>
    <button class="e-control e-btn" (click)="onCancel()">
      Cancel
    </button>
  </ng-template>
</ejs-dialog>
模式 2:带表单的对话框(响应式表单)
// Dialog containing a reactive form
<ejs-dialog [showCloseIcon]="true" width="450px">
  <form [formGroup]="form">
    <div class="e-dlg-content">
      <input formControlName="name" placeholder="Enter name" />
      <input formControlName="email" placeholder="Enter email" />
    </div>
  </form>
  
  <ng-template #footer>
    <button class="e-control e-btn e-primary" (click)="onSubmit()">
      Submit
    </button>
  </ng-template>
</ejs-dialog>
模式 3:定位对话框
// Dialog positioned at a specific location
<ejs-dialog 
  [position]="{ X: 100, Y: 50 }"
  width="400px"
  content="Positioned Dialog"
>
</ejs-dialog>

关键属性速查

属性类型用途示例
isModalboolean阻止与父级交互[isModal]="true"
showCloseIconboolean在标题栏中显示关闭按钮[showCloseIcon]="true"
widthstring | number设置对话框宽度width="400px"
heightstring | number设置对话框高度height="300px"
minHeightstring | number最小高度限制[minHeight]="200"
positionPositionDataModel设置位置(X、Y)或预设位置[position]="{ X: 'center', Y: 'center' }"
targetHTMLElement | string设置容器元素target="#container"
contentstring | HTMLElement设置内容文本或 HTMLcontent="Hello"
headerstring | HTMLElement设置标题文本或元素header="Title"
buttonsButtonPropsModel[]添加页脚按钮[buttons]="buttonArray"
closeOnEscapeboolean按 Escape 键关闭[closeOnEscape]="true"
allowDraggingboolean启用标题栏拖动[allowDragging]="true"
enableResizeboolean启用调整大小[enableResize]="true"
resizeHandlesResizeDirections[]指定调整大小的方向[resizeHandles]="['All']"
cssClassstring自定义 CSS 类cssClass="custom-dialog"
animationSettingsAnimationSettingsModel配置动画[animationSettings]="{ effect: 'FadeZoom' }"
enablePersistenceboolean在重新加载之间保存状态[enablePersistence]="true"
zIndexnumber图层的 Z 顺序[zIndex]="1000"

常见用例

  1. 删除前确认 - 使用模态对话框询问用户是否确认删除
  2. 表单提交 - 使用带表单的对话框让用户提交数据
  3. 警报和通知 - 向用户显示重要信息
  4. 多步骤流程 - 使用嵌套对话框构建工作流
  5. 设置面板 - 使用非模态对话框展示设置,不阻止用户交互
  6. 帮助和指导 - 在可拖动的对话框中显示帮助内容
  7. 加载状态 - 处理过程中在对话框中显示进度
  8. 错误处理 - 在模态对话框中显示错误消息

相关技能

评论

支持 Markdown