Angular Gantt 概览
Angular Gantt 是 DHTMLX Gantt 的官方 Angular 封装。它将甘特图作为一个 Angular 组件(<dhx-gantt>)暴露,具备类型化的输入/输出,并保留对底层 Gantt 实例的访问权限。
如果你需要先了解安装和项目设置,请从 Angular Gantt 快速入门 开始。
AI-assisted development
如果你使用 AI 编码助手, DHTMLX Angular Gantt agent skill 能帮助它遵循正确的封装集成模式,并避免常见错误,如 CSS 导入不匹配、容器高度缺失、Angular 状态与 Gantt instance 之间的混合所有权、以及通过 data.save / data.batchSave 进行不稳定的日期序列化。若需要实时 API 参考,请连接 DHTMLX MCP 服务器。
Core Capabilities
封装适用于简单和高级的 Angular 集成:
- 通过输入
config、templates、plugins、theme、locale进行声明式设置。 - 对
tasks/links以及高级集合(resources、resourceAssignments、baselines)进行数据同步。 - 通过单一的
events输入映射实现动态事件连线。 - 通过
(ready)信号获取已初始化的 Gantt 实例的生命周期。 - 通过
templateComponent(...)在模板中渲染 Angular 组件。 - 通过
customLightbox、groupTasks、filter、calendars、markers和resourceFilter实现高级功能。
基本封装用法
import { Component } from '@angular/core';
import {
DhxGanttComponent,
type AngularGanttDataConfig,
} from '@dhtmlx/trial-angular-gantt';
@Component({
selector: 'app-root',
standalone: true,
imports: [DhxGanttComponent],
template: `
<div style={{height: '600px'}}>
<dhx-gantt
[tasks]="tasks"
[links]="links"
[config]="config"
[data]="dataConfig">
</dhx-gantt>
</div>
`,
})
export class AppComponent {
tasks = [
{ id: 1, text: 'Project', type: 'project', open: true, start_date: new Date(2026, 1, 2).toISOString(), duration: 5, parent: 0 },
{ id: 2, text: 'Planning', start_date: new Date(2026, 1, 2).toISOString(), duration: 2, parent: 1 },
];
links = [{ id: 1, source: 1, target: 2, type: '0' }];
config = {
columns: [
{ name: 'text', tree: true, width: '*' },
{ name: 'start_date', align: 'center' },
{ name: 'duration', align: 'center' },
{ name: 'add', width: 44 },
],
};
dataConfig: AngularGanttDataConfig = {
save: (entity, action, data, id) => {
console.log('[data.save]', entity, action, data, id);
},
};
}
基于属性的同步模型与权衡
封装会监视输入变化并将其同步到当前的 Gantt 实例中。
tasks与links会为常规的新增/更新/删除变更进行增量同步。- 对于较大结构性变更,封装可以重置并重新解析数据。
resources、resourceAssignments、baselines通过相关的数据存储进行同步。config、templates、plugins、locale、theme在运行时生效。- 如果
config.layout的形状改变,封装可能会重新初始化 Gantt 布局以应用新结构。
请参考 Data Binding and State Management Basics 获取完整的数据所有权指南。
events 映射 与 (ready)
Angular Gantt 使用一个 events 映射来处理 Gantt 事件处理程序,并使用单独的 (ready) 输出来进行一次性的生命周期访问。
import { Component } from '@angular/core';
import {
DhxGanttComponent,
type AngularGanttEvents,
type GanttStatic,
} from '@dhtmlx/trial-angular-gantt';
@Component({
standalone: true,
imports: [DhxGanttComponent],
template: `<dhx-gantt [events]="events" (ready)="onReady($event)"></dhx-gantt>`,
})
export class DemoComponent {
events: AngularGanttEvents = {
onTaskCreated: (task) => {
console.log('task created', task);
return true;
},
onBeforeLightbox: (taskId) => {
console.log('before lightbox', taskId);
return true;
},
};
onReady({ instance }: { instance: GanttStatic }): void {
console.log('ready', instance);
}
}
请使用 events 来实现交互行为。使用 (ready) 处理需要已初始化实例的逻辑。