与 Angular 集成
DHTMLX Booking 通过自定义组件包装 widget 构造函数,与 Angular 进行集成。本指南将带您完成创建新 Angular 项目、安装 Booking 以及渲染含数据和事件的 widget 的全过程。完整的参考实现请参见 GitHub 上的 Angular 示例。
本指南假设您已熟悉 Angular 核心概念。如需入门介绍,请参阅 Angular 文档。
创建项目
在添加 Booking 集成之前,先使用 Angular CLI 创建一个新的 Angular 应用。
开始前请先安装 Angular CLI 和 Node.js。
以下命令将创建一个名为 my-angular-booking-app 的新项目:
ng new my-angular-booking-app
当 CLI 提示时,请禁用服务端渲染(SSR)和静态站点生成(SSG/Prerendering)。Booking widget 在客户端挂载到 DOM。
该命令会安装所有必要的工具,无需执行额外命令。
安装依赖
切换到项目目录。
以下命令将打开新创建的应用文件夹:
cd my-angular-booking-app
使用您的包管理器安装依赖并启动开发服务器。
以下命令使用 yarn:
yarn
yarn start
以下命令使用 npm:
npm install
npm start
应用将在本地运行,例如 http://localhost:4200。
将 Booking 添加到应用
在安装 Booking 包之前,请先停止开发服务器,然后创建一个包装 widget 的 Angular 组件。
第 1 步:安装包
下载 试用版 Booking 包 并按照包中 README 的步骤操作。试用版有效期为 30 天。
第 2 步:创建 Booking 组件
在 src/app/ 目录下创建 booking 文 件夹,并在其中添加 booking.component.ts 文件。按照以下步骤完成 widget 的连接。
导入源文件
根据您使用的发行版,通过对应路径导入 Booking 类:
- dhx-booking-package — 从本地文件夹安装的 PRO 版本
- @dhx/trial-booking — 试用版
以下代码片段从 PRO 包导入 Booking:
import { Booking } from 'dhx-booking-package';
以下代码片段从试用包导入 Booking:
import { Booking } from '@dhx/trial-booking';
本教程使用 Booking 试用版。
设置容器并初始化 Booking
在组件模板中定义宿主容器,并在 ngOnInit() 中实例化 Booking。在 ngOnDestroy() 中调用 destructor(),以便在 Angular 移除组件时卸载 widget。
以下代码片段声明了一个带有容器元素和生命周期钩子的 Booking 组件:
import { Booking } from '@dhx/trial-booking';
import { Component, ElementRef, OnInit, ViewChild, OnDestroy, ViewEncapsulation } from '@angular/core';
@Component({
encapsulation: ViewEncapsulation.None,
selector: "booking", // 在 app.component.ts 中以 <booking /> 使用
styleUrls: ["./booking.component.css"],
template: `<div #container className="widget"></div>`,
})
export class BookingComponent implements OnInit, OnDestroy {
// Booking 的宿主容器
@ViewChild('container', { static: true }) booking_container!: ElementRef;
private _booking!: Booking;
ngOnInit() {
// 创建 Booking 实例
this._booking = new Booking(this.booking_container.nativeElement, {});
}
ngOnDestroy(): void {
this._booking.destructor(); // 卸载 Booking
}
}
添加样式
Booking 需要 widget 样式表和一个具有尺寸的容器。
在 src/app/booking/ 目录下创建 booking.component.css 文件。
以下代码片段导入 Booking 样式表,并为页面和 widget 容器设置全高:
/* 导入 Booking 样式 */
@import "@dhx/trial-booking/dist/booking.css";
/* 页面样式 */
html,
body {
margin: 0;
padding: 0;
height: 100%;
}
/* Booking 容器 */
.widget {
height: 100%;
}