Интеграция с Angular
Прежде чем читать эту документацию, ознакомьтесь с базовыми концепциями и шаблонами Angular. Для обновления знаний обратитесь к документации Angular.
DHTMLX To Do List совместим с Angular. Приведённые ниже примеры показывают, как использовать их вместе. Полный проект доступен в примере на GitHub.
Создание проекта
Создайте новый проект Angular и установите зависимости.
Перед созданием нового проекта установите Angular CLI и Node.js.
Создайте новый проект my-angular-todo-app с помощью Angular CLI. Выполните следующую команду:
ng new my-angular-todo-app
Чтобы следовать этому руководству, отключите Server-Side Rendering (SSR) и Static Site Generation (SSG/Prerendering) при создании нового Angular-приложения.
Команда устанавливает все необходимые инструменты.
Установка зависимостей
Перейдите в директорию созданного приложения:
cd my-angular-todo-app
Установите зависимости и запустите сервер разработки с помощью менеджера пакетов yarn:
yarn
yarn start
Приложение запускается по адресу localhost (например, http://localhost:3000).
Создание To Do List
Остановите приложение и установите пакет To Do List.
Шаг 1. Установка пакета
Загрузите пробный пакет To Do List и следуйте инструкциям в файле README. Пробная версия доступна только 30 дней.
Шаг 2. Создание компонента
Создайте Angular-компонент для добавления To Do List с Toolbar в приложение. В директории src/app/ создайте папку todo и внутри неё файл todo.component.ts.
Импорт исходных файлов
Откройте todo.component.ts и и мпортируйте исходные файлы To Do List. Выберите один из двух путей импорта:
- PRO-версия, установленная из локальной папки — импорт из
dhx-todolist-package - пробная версия — импорт из
@dhx/trial-todolist
Следующий фрагмент импортирует из PRO-пакета:
import { ToDo, Toolbar } from 'dhx-todolist-package';
Следующий фрагмент импортирует из пробного пакета:
import { ToDo, Toolbar } from '@dhx/trial-todolist';
В этом руководстве используется пробная версия.
Настройка контейнеров и инициализация To Do List с Toolbar
Чтобы отобразить To Do List с Toolbar на странице, задайте контейнеры для обоих компонентов и инициализируйте их с помощью конструкторов. Пример ниже определяет шаблон, ссылки на контейнеры и инициализирует компоненты внутри ngOnInit():
import { ToDo, Toolbar } from '@dhx/trial-todolist';
import { Component, ElementRef, OnInit, ViewChild, OnDestroy, ViewEncapsulation} from '@angular/core';
@Component({
encapsulation: ViewEncapsulation.None,
selector: "todo", // имя шаблона, используемое в "app.component.ts" как <todo />
styleUrls: ["./todo.component.css"], // подключение css-файла
template: `<main class = "component_container">
<div #toolbar_container></div>
<div #todo_container class = "widget"></div>
</main>`
})
export class ToDoComponent implements OnInit, OnDestroy {
// инициализация контейнера для Toolbar
@ViewChild("toolbar_container", { static: true }) toolbar_container!: ElementRef;
// инициализация контейнера для To Do List
@ViewChild("todo_container", { static: true }) todo_container!: ElementRef;
private _todo!: ToDo;
private _toolbar!: Toolbar;
ngOnInit() {
// инициализация компонента To Do List
this._todo = new ToDo(this.todo_container.nativeElement, {});
// инициализация компонента Toolbar
this._toolbar = new Toolbar(this.toolbar_container.nativeElement, {
api: this._todo.api,
// другие свойства конфигурации
});
}
ngOnDestroy(): void {
this._todo.destructor(); // уничтожение To Do List
this._toolbar.destructor(); // уничтожение Toolbar
}
}
Добавление стилей
Импортируйте CSS-файл, чтобы To Do List отображался корректно. Создайте файл todo.component.css в директории src/app/todo/ и добавьте стили для To Do List и его контейнера. Фрагмент ниже имп ортирует стили To Do List и задаёт размеры макета:
/* импорт стилей To Do List */
@import "@dhx/trial-todolist/dist/todo.css";
/* стили для начальной страницы */
html,
body{
height: 100%;
padding: 0;
margin: 0;
background-color: #f7f7f7;
}
/* стили для контейнера To Do List и Toolbar */
.component_container {
height: 100%;
max-width: 800px;
margin: 0 auto;
}
/* стили для контейнера To Do List */
.widget {
height: calc(100% - 56px);
}