Ionic 3 добавляет класс динамически, если ввод недействителен

Привет, я использую Ionic 3, и я использую formBuilder из Угловой для проверки моего входные данные формы и отображения некоторого сообщения проверки в пользовательском интерфейсе компонента, когда что-то идет не так с Вход.

Теперь все работает нормально кроме одного. Я хочу добавить класс динамически к моему вводу, когда input field не является действительный.

Картинка ниже.

Ionic 3 добавляет класс динамически, если ввод недействителен

Вот как это выглядит у меня в html

 <ion-input class = "input-cover" id = "firstName" formControlName = "firstName" type = "text" placeholder = "First Name *"
            [class.invalid] = "form.controls['firstName'].errors && (form.controls['firstName'].dirty || form.controls['firstName'].touched)"></ion-input>

а в моем scss у меня это ниже

.invalid {
        border: 1px solid #ea6153;
        border-radius: 5px;
    }

.text-input-ios, .text-input-md {
        border-radius: 5px;
        border: 1px solid #efefef;
    }

Что-то не так с моим динамический класс?

Я предполагаю, что dynamic class неправильный, и мой конструктор форм работает нормально, потому что появляется сообщения проверки.

Вот и все мои код scss

page-register {
// ion-input {
//     border: 5px !important;
// }

.upload-cover-button{
    position: relative;
    button{
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%)
    }
}

button{
    border-radius: 4px !important;
}

.text-input-ios, .text-input-md {
    border-radius: 5px;
    border: 1px solid #efefef;
}

.text-input {
    margin: 0;
    width: calc(100% - 8px);
    padding: 13px 8px;
}

hr {
     height: 1px !important;
}

.input-cover {
    position: static;
}

.col-static {
    position : initial !important;
}

ion-select {
    padding: 1px;
    border-radius: 5px;
    border: 1px solid #efefef;
    width: calc(100% - 8px);
    max-width: 100%;
}

img {
    border-radius: 50%;
    height: 80px;
}

.center-vertical-horizontal {
    display: flex;
    align-items: center;
    justify-content: center;
}

.button-spinner {
    display: flex;
    margin-left: 5px;
}

.register-spinner {
    * {
        stroke: white !important;
    }
}

.error-message {
    color: #ea6153;
}

.invalid {
    border: 1px solid #ea6153;
    border-radius: 5px;
}

}

Цените, если кто-то может помочь. Заранее спасибо.

Вы можете посмотреть ngClass

Sabyasachi Patra 06.08.2018 03:37

Я пробовал это, но все равно не работает [ngClass] = "form.controls['firstName'].errors && (form.controls['firstName'].dirty || form.controls['firstName'].touched) ? 'invalid' : ''"

KnowledgeSeeker 06.08.2018 03:44

Попробуй вот так [ngClass] = "{ invalid: condition }"

Sabyasachi Patra 06.08.2018 04:00
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
3
1 740
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это должно решить вашу проблему

<ion-input class = "input-cover" id = "firstName" formControlName = "firstName" type = "text" placeholder = "First Name *"
            [ngClass] = "{'invalid' : form.controls['firstName'].errors && (form.controls['firstName'].dirty || form.controls['firstName'].touched)}"></ion-input>

Добавьте это в свой scss

 .invalid input {
    border: 1px solid #ea6153;
    border-radius: 5px;
  }

не работал, это стиль, когда я пытаюсь использовать console.info() на входе и просмотреть его источник. page-register .text-input { margin: 0; width: calc(100% - 8px); padding: 13px 8px; } page-register .text-input-ios, page-register .text-input-md { border-radius: 5px; border: 1px solid #ea6153; } .text-input-ios { margin: 11px 8px 11px 0; padding: 0; width: calc(100% - 8px); }

KnowledgeSeeker 06.08.2018 04:49

Я также пытался поставить стиль вручную без условий, но не сработало, возможно, из-за этого линия scss ниже .text-input-ios, .text-input-md { border-radius: 5px; border: 1px solid #efefef; } или этого ion-input { border: 5px !important; }

KnowledgeSeeker 06.08.2018 04:53

вы видите добавленный класс?

Sabyasachi Patra 06.08.2018 04:56

Неа. Я пробовал вручную даже без условий. Пытался даже использовать встроенный стиль, но не получилось

KnowledgeSeeker 06.08.2018 05:24

вы не видите класс, добавленный к ионному вводу, например это?

Sabyasachi Patra 06.08.2018 05:29

Извините, когда я удалил этот ion-input { border: 5px !important; } из моего scss, он работал, но граница слишком большая.

KnowledgeSeeker 06.08.2018 05:42

Отредактировал это. @Sabyasachi Patra

KnowledgeSeeker 06.08.2018 05:50

Позвольте нам продолжить обсуждение в чате.

Sabyasachi Patra 06.08.2018 05:56

Лично я бы использовал [class.invalid] = "form.get('firstName').invalid && (form.get('firstName').dirty || form.get('firstName').touched)".

Joseph Webber 06.08.2018 06:11

Другие вопросы по теме