Angular 5 Проверка значения переменной в операторе * и ngIf

6

Я использую угловой 5, и я пытаюсь проверить значение переменной в html-шаблоне компонента.

Так выглядит примерно так:

<div *ngIf="item='somevalue'">

Я получаю эту ошибку:

ht Ошибка: ошибки анализа шаблона:

Parser Error: Bindings cannot contain assignments at column 17 in...

Разве это невозможно сделать с угловым?

  • 1
    Вы получили опечатку, ваш код должен быть: <div *ngIf="item=='somevalue'">
Теги:
angular

6 ответов

23
Лучший ответ

* ngIf работать как это *ngIf="expression" где expression заменяет простой оператор Javascript, который возвращает boolean. Но вы используете one = и это означает, что вы назначаете someValue для свойства item и если значение не является ложным, оно вернет вам true.

В вашем случае вам нужно написать *ngIf="item === 'somevalue'".

9

Вы выполняете задание вместо сравнения

<div *ngIf="item==='somevalue'">
5

Вы выполняете задание с использованием оператора single =.

Используйте double = == operator для проверки равенства или лучшего использования === для проверки строгого равенства.

<div *ngIf="item === 'somevalue'">
  • 0
    Вместо этого вы должны использовать === в Javascript.
  • 0
    Это правда, но если разработчик не использовал типы должным образом, результат не будет отображаться. === - это лучшая практика, но == полезна для отображения результатов без учета типов.
Показать ещё 1 комментарий
4

измените его на item==='somevalue'. опечатка вероятно

1

Там должно быть никаких кавычек внутри кавычек вне слоя. То есть должен быть только ОДИН слой цитат. Моя похожа на следующее:

      <ng-container *ngFor="let event of events">
         <ng-container *ngIf="event._id===id">
           ....
         </ng-container>
      </ng-container>

В показанном выше примере " event._id " - это " _id " "события", а " id " справа от уравнения - это свойство из файла .ts компонента.

Оба "==" и "===" работают нормально. И это НЕ будет работать, если вы поместите какие-либо кавычки внутрь.

0

используйте *ngIf="event._id==='id' " чтобы подчеркнуть тип идентификатора в виде строки. в противном случае *ngIf предназначен для логических, даже не выражений с такими операторами, как <, >,&&,|| , на факте, что числа не будут работать как ожидалось. а также выражения типа marksArray.length ===0 работать. потому что 0 принимается за тип строки.

надеюсь это поможет

Ещё вопросы

Сообщество Overcoder
Наверх
Меню