NativeScript/Angular - Как стилизовать проверенное состояние на переключателе при использовании ngModel/FormBuilder?

Рассмотрим этот переключатель:

<Switch class="switch" formControlName="answer"></Switch>

Если я сделаю это, он будет работать только тогда, когда вы еще не активировали переключатель, после этого цвет фона всегда будет таким же, даже если переключатель не активен:

.switch[checked=true] {
  background-color: #FE4A49;
  color: #FE4A49;
}

И если я сделаю это:

.switch {
  background-color: #FE4A49;
  color: #FE4A49;
}

Тогда фон всегда будет одинаковым независимо от состояния.

Как правильно стилизовать переключатель при использовании его с привязками модели angular?

3 ответа

Я разрабатываю приложение, и это я бы сделал.

CSS:

Switch#userStatus[checked=true]{
  color:#ff0048 ;
  background-color: white;
  transform: scale(1.25, 1.25); // This is for change the size when checked
  transform: translate(-5,0); // This is for stay the position after scale it
}

Switch#userStatus[checked=false]{
  color: gray;
  background-color: gray;
}

И это мой XML:

`<Switch id="userStatus" checked="false" />`

Надеюсь, это поможет!

У меня была проблема с выключателем

фоновый цвет

и это не сработало, как ожидалось. Изменение цвета фона меняло весь переключатель (серая часть). Поэтому мне пришлось изменить только свойство цвета:

Switch[checked=true] {
    color: #f68533;
}
.switch-notchecked {
    background-color: #FE4A49;
    color: yellow;
}

.switch-checked {
    background-color: blue;
    color: green;
}

В вашем шаблоне

<Switch #sw checked="false" (checkedChange)="switchChanged(sw.checked)" [class]="isChecked?'switch-checked':'switch-notchecked'"></Switch>

В вашем компоненте

isChecked:boolean;

 switchChanged(checked) {
        this.isChecked = checked;
    }
Другие вопросы по тегам