Если вы используете директиву, у которой есть входные данные, которые могут конфликтовать с атрибутом родительского элемента, у вас есть 3 параметра.
- Измените входную информацию директивы на неконфликтующее имя.
Использовать нотацию привязки
<button title="PushMe" titleTesting [title]="'dont push me'">Push this</button>
Использовать нотацию атрибута.
<button [attr.title]="'PushMe'" titleTesting title="dont push me">Push this</button>
Код директивы, используемый вшаблон выше:
@Directive({
selector: '[titleTesting]'
})
export class TitleTestDirective implements OnInit {
@Input() title: string;
ngOnInit(){
console.log(this.title);
}
}
Наконец, если значения должны быть одинаковыми и являются константой, определенной в шаблоне, тогда действуйте как обычно, так как элемент и ваша директива получат одно и то же значение, например:
<button titleTesting title="dont push me">Push this</button>
См. Также Синтаксис привязки: обзор и Привязка свойства или интерполяция? , привязка атрибута и stackblitz .
Нормализация
Короче angular не поддерживает или не делает ничего с нормализацией.Вы указали директиву, но у вас был пример компонента, у компонента не было бы никаких конфликтующих атрибутов / входов, поэтому я решил смоделировать пример с использованием директив.
data- - это конструкция HTML5, angular напрямую с этим ничего не делает.Если вы включите data- , хотя он все равно будет привязан к входным данным, как ожидается, но он не будет установлен для какого-либо конкретного атрибута html.Пример: data-title="some title"
.Исходя из данных- документации , это ожидаемое поведение.
Можно указывать как data- , так и элементы не data-
одного и того же типа для разных значений, но важен порядок их появления.Пример:
<button titleTesting title="Push me" data-title="DOn't push me">Push this</button>