как заменить jquery в моем угловом приложении? - PullRequest
0 голосов
/ 06 июня 2018

Я создаю приложение Angular и использую jquery для динамического изменения входного класса с помощью событий focusin и focusout, как вы можете видеть из кода ниже:

$(".form-input").focusin(function(){
        $(this).addClass("focus");
        $(this).prev().addClass("label-focus");
});
$(".form-input").focusout(function(){
        $(this).removeClass("focus");
        $(this).prev().removeClass("label-focus");
});

Я сомневаюсь:Я прочитал в угловых документах, что я не должен использовать angular с jquery и что вместо этого я должен использовать привязку данных, но как я могу это сделать?

Ответы [ 4 ]

0 голосов
/ 06 июня 2018

Вы также можете использовать ngClass:

<label for="input" [ngClass]="{ 'active': isActive}">Name</label>
<input
  type="text"
  name="input"
  [ngClass]="{ 'active': isActive}"
  (focus)="isActive = !isActive"
  (blur)="isActive = !isActive">

и объявить свойство в компоненте:

export class AppComponent  {
  isActive = false;
}

https://stackblitz.com/edit/toggle-class-on-focus-and-blur-event-in-angular

0 голосов
/ 06 июня 2018

Ответ Пардипа работает, но вы можете сделать это, используя чистый CSS.Добавьте это к вашему стилю компонента:

.form-input:focus {
    background-color: red;
}
0 голосов
/ 06 июня 2018

Поскольку вы хотите использовать класс, я бы порекомендовал использовать документ.

Начните с объявления документа как части вашего компонента:

export class MyComponent {
  document = document;
}

(я знаю, кажется бесполезным, но это необходимо).

Как только вы это сделаете, вы можете использовать переменные шаблона и activeElement вот так

<label [class.input-focused]="document.activeElement === nameInput">Name :</label>
<input #nameInput [class.focused]="document.activeElement === nameInput">
0 голосов
/ 06 июня 2018

Старайтесь избегать jQuery с угловым, как указано официальным, вместо этого просто используйте databinding или даже связывание в угловом.

например -

<input (focus)='focusEvent($event)'>

Подробнее о событиях читайте здесь-

или

Классы CSS можно добавлять условно с помощьюngClass тоже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...