Не работает, потому что первый случай сделан до компиляции , а второй - после компиляции .
Чтобы сформулировать это более понятным образом:
когда пишешь
<g id="tick1" matTooltip="200">
При компиляции Angular читает этот тег и понимает, что он должен отображать подсказку через директиву.
Таким образом, он заменит этот атрибут matTooltip
чем-то вроде data-mat-tooltip="200"
и будет использовать его в таблице стилей для отображения всплывающей подсказки, что-то вроде
g[data-mat-tooltip]:after {
content: attr(data-mat-tooltip);
// Styles & animations
}
С другой стороны, когда вы создаете код в логике вашего компонента, ваш код компилируется, и после компиляции добавляется атрибут .
matTooltip не является атрибутом HTML, ничего не происходит.
Если вы хотите решить эту проблему, вы можете взглянуть на , как работает директива (готовьтесь к трудностям), или вы можете попробовать использовать первое решение, которое вы использовали, которое в На мой взгляд, самый простой.