Настроить Angular Материал 2 Типы подсказок

В AngularJS можно создавать подсказки в CSS с помощью селектора .md-tooltip

Каким образом можно настраивать всплывающие подсказки в формате Angular 4?


EDIT:

Я использую Angular 4 и Material2.

Пример того, как я его использую:

<span mdTooltip='TEST' mdTooltipPosition='right'>TEST</span>

Это показывает всплывающую подсказку очень хорошо, за исключением того, что я не знаю, как ее стилизовать.

Ответ 1

Если вы хотите настроить css всплывающей подсказки, вы можете использовать ::ng-deep. Добавьте в стили ваших компонентов следующие стили:

::ng-deep .mat-tooltip {
    /* your own custom styles here */ 
    /* e.g. */
    color: yellow;
}

Другой вариант - установить Просмотр инкапсуляции на None в вашем компоненте:

@Component({ 
    templateUrl: './my.component.html', 
    styleUrls: ['./my.component.css'], 
    encapsulation: ViewEncapsulation.None
})

Затем в вашем компоненте css вам не нужно использовать ::ng-deep.

.mat-tooltip {
    /* your own custom styles here */ 
    /* e.g. */
    color: yellow;
}

Ответ 2

Вы можете взглянуть на следующий пример angular/material2 Tooltip Demo

По сути, вы можете настроить всплывающую подсказку следующим образом (вы можете определить не только CSS, но и позицию, задержку скрытия, задержку показа и, если она отключена или нет):

<button #tooltip="mdTooltip"
            md-raised-button
            color="primary"
            [mdTooltip]="message"
            [mdTooltipPosition]="position"
            [mdTooltipDisabled]="disabled"
            [mdTooltipShowDelay]="showDelay"
            [mdTooltipHideDelay]="hideDelay"
            [mdTooltipClass]="{'red-tooltip': showExtraClass}">

В вашем компоненте тогда

  position: TooltipPosition = 'below';
  message: string = 'Here is the tooltip';
  disabled = false;
  showDelay = 0;
  hideDelay = 1000;
  showExtraClass = true;

И CSS как пример:

/deep/ .red-tooltip {
  background-color: rgb(255, 128, 128);
  color: black;
}

Ответ 3

Просто добавьте matTooltipClass="red-tooltip" во входной тег. А затем в styles.css добавить определение для этого класса

<input type="number" matTooltipClass='red-tooltip'/>

.red-tooltip{
       background-color:red;
}

Ответ 4

цвет: желтый; не перезаписывает класс (mat-tooltip), который вы должны добавить! important;

вот так:

XX.component.ts:

import { Component, OnInit } from '@angular/core';
import { ViewEncapsulation } from '@angular/core';

@Component({
  selector: 'app-tooltip-demo',
  templateUrl: './XX.component.html',
  styleUrls: ['./XX.component.css'],
  encapsulation: ViewEncapsulation.None
})
export class TooltipDemoComponent implements OnInit {

  constructor() { }

  ngOnInit() {
  }
}

Шаблон HTML:

<div matTooltip="This is the Tooltip!" matTooltipPosition="below">This text has a tooltip!</div>

Шаблон CSS:

.mat-tooltip {
  color: yellow !important;
}

тогда это сработает!

Ответ 5

Подсказка Angular Material предоставляет входное свойство 'matTooltipClass'

Так в HTML

 ' 

        <mat-icon color="primary" matTooltip="test"
                    [matTooltipClass]="{ 'tool-tip': true }"
                    >help</mat-icon>

    '

В CSS

   .tool-tip {
      color: white;
      background-color: red;

    }

Ответ 6

Всегда используйте matTooltipClass и пользовательский класс. Никогда не используйте :: ng-deep непосредственно для класса материала и НИКОГДА, НИКОГДА не устанавливайте инкапсуляцию: ViewEncapsulation.None. Angular компоненты выполнены модульными и имеют собственный стиль. Оба: ng-deep (или /deep/или >>> или как их там называют в наши дни) и viewEncapsulation будут переопределять стили, которые вы, возможно, захотите сохранить содержащимися в других компонентах. Однажды меня одурачили, иногда нелегкой работы, но это может привести к серьезному повреждению макета.