Проблема в том, что кнопка не существует, когда ввод пуст и когда вводится некоторый текст, кнопка вставляется в DOM, занимая некоторое пространство, которое заставляет метку двигаться. Один из способов поместить кнопку на другой слой - использовать position: absolute
для элемента.
Попробуйте что-то вроде этого:
Устраняемые-input.component.html
<div class="input-wrapper">
<input class="input" [(ngModel)]="value">
<button *ngIf="value" class="button-close" (click)="value=''">X</button>
</div>
<label>Description</label>
Устраняемые-input.component.ts
.input-wrapper {
position: relative;
display: inline-block;
}
button {
position: absolute;
top: 50%;
right: 5px;
transform: translateY(-50%);
border: none;
background-color: transparent;
}
label {
margin-left: 15px;
}
Рабочая демо