Привет, я использую Ionic 3, и я использую formBuilder из Угловой для проверки моего входные данные формы и отображения некоторого сообщения проверки в пользовательском интерфейсе компонента, когда что-то идет не так с Вход.
Теперь все работает нормально кроме одного. Я хочу добавить класс динамически к моему вводу, когда input field не является действительный.
Картинка ниже.
Вот как это выглядит у меня в 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] = "form.controls['firstName'].errors && (form.controls['firstName'].dirty || form.controls['firstName'].touched) ? 'invalid' : ''"
Попробуй вот так [ngClass] = "{ invalid: condition }"





Это должно решить вашу проблему
<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); }
Я также пытался поставить стиль вручную без условий, но не сработало, возможно, из-за этого линия scss ниже .text-input-ios, .text-input-md { border-radius: 5px; border: 1px solid #efefef; } или этого ion-input { border: 5px !important; }
вы видите добавленный класс?
Неа. Я пробовал вручную даже без условий. Пытался даже использовать встроенный стиль, но не получилось
вы не видите класс, добавленный к ионному вводу, например это?
Извините, когда я удалил этот ion-input { border: 5px !important; } из моего scss, он работал, но граница слишком большая.
Отредактировал это. @Sabyasachi Patra
Позвольте нам продолжить обсуждение в чате.
Лично я бы использовал [class.invalid] = "form.get('firstName').invalid && (form.get('firstName').dirty || form.get('firstName').touched)".
Вы можете посмотреть ngClass