Angular Form - Add Tooltips to Item Labels

To add a tooltip to a Form item label, use the label.template property. Inside the template, render the label text alongside a Tooltip component that displays additional information when a user hovers over the label.

jQuery
JavaScript
$(function() {
    $("#formContainer").dxForm({
        formData: {
            name: "John Heart",
            position: "CEO"
        },
        items: [{
            dataField: "name",
            label: {
                template: function(data, element) {
                    $("<span>").text(data.text).appendTo(element);

                    const iconEl = $("<i>")
                        .addClass("dx-icon dx-icon-info")
                        .css({ "margin-left": "4px", "cursor": "pointer" })
                        .appendTo(element);

                    $("<div>").dxTooltip({
                        target: iconEl,
                        showEvent: "mouseenter",
                        hideEvent: "mouseleave",
                        contentTemplate: function() {
                            return "Enter the full name as it appears on official documents.";
                        }
                    }).appendTo(element);
                }
            }
        },
        "position"]
    });
});
Angular
app.component.html
app.component.ts
app.component.css
<dx-form [formData]="employee">
    <dxi-form-item dataField="name">
        <dxo-label [template]="labelTemplate"></dxo-label>
    </dxi-form-item>
    <dxi-form-item dataField="position"></dxi-form-item>
</dx-form>

<ng-template #labelTemplate let-data>
    <span>{{ data.text }}</span>
    <i id="nameTooltipTarget" class="dx-icon dx-icon-info tooltip-icon"></i>
    <dx-tooltip
        target="#nameTooltipTarget"
        showEvent="mouseenter"
        hideEvent="mouseleave">
        <div *dxTemplate="let t of 'content'">
            Enter the full name as it appears on official documents.
        </div>
    </dx-tooltip>
</ng-template>
import { Component } from "@angular/core";
import { DxFormModule, DxTooltipModule } from "devextreme-angular";

@Component({
    selector: "app-root",
    templateUrl: "./app.component.html",
    styleUrl: "./app.component.css",
    standalone: true,
    imports: [DxFormModule, DxTooltipModule]
})
export class AppComponent {
    employee = {
        name: "John Heart",
        position: "CEO"
    };
}
.tooltip-icon {
    margin-left: 4px;
    cursor: pointer;
}
Vue
App.vue
<template>
    <DxForm :form-data="employee">
        <DxSimpleItem data-field="name">
            <DxLabel :template="labelTemplate" />
        </DxSimpleItem>
        <DxSimpleItem data-field="position" />
    </DxForm>

    <DxTooltip
        target="#nameTooltipTarget"
        show-event="mouseenter"
        hide-event="mouseleave">
        <template #content>
            Enter the full name as it appears on official documents.
        </template>
    </DxTooltip>
</template>

<script setup lang="ts">
import 'devextreme/dist/css/dx.fluent.blue.light.css';

import { DxForm, DxSimpleItem, DxLabel } from 'devextreme-vue/form';
import { DxTooltip } from 'devextreme-vue/tooltip';
import { h, ref } from 'vue';

const employee = ref({
    name: 'John Heart',
    position: 'CEO'
});

const labelTemplate = (data: { text: string }) => h('span', [
    data.text,
    h('i', {
        id: 'nameTooltipTarget',
        class: 'dx-icon dx-icon-info tooltip-icon'
    })
]);
</script>

<style>
.tooltip-icon {
    margin-left: 4px;
    cursor: pointer;
}
</style>
React
App.css
App.tsx
.tooltip-icon {
    margin-left: 4px;
    cursor: pointer;
}
import React from 'react';

import 'devextreme/dist/css/dx.fluent.blue.light.css';
import './App.css';

import { Form, SimpleItem, Label } from 'devextreme-react/form';
import { Tooltip } from 'devextreme-react/tooltip';

const employee = {
    name: 'John Heart',
    position: 'CEO'
};

function LabelTemplate({ data }: { data: { text: string } }) {
    return (
        <>
            <span>{data.text}</span>
            <i
                id="nameTooltipTarget"
                className="dx-icon dx-icon-info tooltip-icon"
            />
            <Tooltip
                target="#nameTooltipTarget"
                showEvent="mouseenter"
                hideEvent="mouseleave">
                Enter the full name as it appears on official documents.
            </Tooltip>
        </>
    );
}

export default function App() {
    return (
        <Form formData={employee}>
            <SimpleItem dataField="name">
                <Label render={(data) => <LabelTemplate data={data} />} />
            </SimpleItem>
            <SimpleItem dataField="position" />
        </Form>
    );
}

You can find a full implementation example in the Form - Item Customization demo.