Мне недавно стало интересно, почему нельзя изменить активный сегмент в ionic v3, изменив [(ngModel)] в ionScroll.subscribe () .У меня есть содержимое сегмента, расположенное друг под другом.Поэтому я использую кнопки для «прокрутки привязки» и хочу, чтобы они отображались наоборот, когда моя позиция прокрутки находится над определенной позицией.Вот мой код:
<ion-segment [(ngModel)]="segData">
<ion-segment-button (click)="this.scrollToCard('card1')" value="seg1">Card1</ion-segment-button>
<ion-segment-button (click)="this.scrollToCard('card2')" value="seg2">Card2</ion-segment-button>
</ion-segment>
<div [ngSwitch]="segData">
<ion-list *ngSwitchCase="'seg1'">
<ion-item>
<ion-card #card1>...</ion-card>
</ion-item>
<ion-item>
<ion-card #card2>...</ion-card>
</ion-item>
</ion-list>
</div>
example.ts
segData: string;
export class ShowCar
{
@ViewChild(Content) content : Content;
...
constructor(...)
{
this.segData = "seg1";
}
...
ionViewDidLoad()
{
//This would work
//setTimeout( () => { this.segData = "seg2"; }
//Inside ionScroll.subscribe() it is not working
//Even if i wrap this into "setTimeout"
this.content.ionScroll.subscribe( scrollData =>
{
if( scrollData.scrollTop > seg1PosFromTop)
this.segData = "seg2";
});
}
...
}
Я перепробовал много вещей, и некоторые сумасшедшие вещи могли происходить.Например, поскольку последняя версия angular позволяет работать с элементами непосредственно из DOM, я вызвал событие click для элемента.Затем сегмент вскоре становится активным, и через миллисекунду предыдущий сегмент снова становится активным.Также я играл с изменением классов CSS.Однако, нажимая на кнопки сегмента, я должен был это захватить, удалить все классы segment-button segment-active
и добавить его вручную к выбранному.