Поскольку вы сказали, что размер содержимого изменяется, кнопка не получает достаточно места, поэтому она переходит на следующую строку.
Решением этого будет назначено фиксированное значение для кнопки, группирование оставшегося содержимого и использование
width:calc(100% - 30px);
для оставшегося содержимого.
Обратите внимание, что width:calc(100% - 30px)
также должен учитывать любое поле, примененное к кнопке или содержимому.
.inner{
display:inline:block;
width:calc(100% - 30px); /*30px. should be same as button width */
}
.buuton{
width:30px;
}
<ion-row>
<div col-7 offset-5 no-padding text-right>
<div class="inner">
<ion-label *ngIf="!showInverted" no-margin class="rate label-tx">1 </ion-label>
<ion-label *ngIf="showInverted" no-margin class="rate label-tx">1 </ion-label>
</div>
<button (click)="showInvertedRate()" ion-button clear color="dark"> <ion-icon name="swap" class="rotate90"></ion-icon></button>
</div>
</ion-row>