ОШИБКА TypeError: невозможно прочитать свойство clientId со значением null

После нажатия на мой объект я меняю компонент на другой, чтобы обновить этот объект. в этом компоненте для обновления у меня есть форма, содержащая элемент select с параметрами, которые должны быть инициализированы значениями из базы данных (в методе OnInit)

и мне нужно выбрать по умолчанию из этого списка значений значение моего объекта

 <label>Catégorie Client:</label>
 <select class="form-control" [(ngModel)]="client.clientId" >
     <option></option>
     <option *ngFor="let client of clients" [value]="client.clientId">{{client.name}}</option>
 </select>

Проблема в том, что клиент может быть нулевым, и я хочу в этом случае показать <option></option> как значение по умолчанию с пустым значением, но я получил ошибку

не может прочитать нулевое значение

У меня есть экземпляр объекта...

Спасибо за помощь.


person YK mar    schedule 22.02.2018    source источник
comment
ты пробовал client?.clientId? [value]=xxx поддерживает только строковый тип, [ngValue]="xxx" поддерживает любой тип   -  person Haifeng Zhang    schedule 23.02.2018
comment
Я старался ? но Ошибка: '?.' оператор не может быть использован в присваивании   -  person YK mar    schedule 23.02.2018


Ответы (1)


[(ngModel)]="client.clientId" выдает ошибку. client здесь недоступен, вы указали его в своих optionтегах

Имейте в виду, что [value]="xxx" поддерживает только строку, если ваш clientId является числом, вам лучше выбрать [ngValue]="xxx"

 <label>Catégorie Client:</label>
 <select 
   class="form-control" 
   [(ngModel)]="selectedClient" >
   <option></option>
   <option 
     *ngFor="let client of clients" 
     [ngValue]="client"
   >
   {{client.name}}
   </option>
 </select>

selectedClient необходимо инициализировать одним элементом clients,

как упоминалось ConnorsFan, вы можете оставить selectedClient нулевым, чтобы в начале ничего не было выбрано.

person Haifeng Zhang    schedule 22.02.2018
comment
но не будет показывать выбор, если клиент имеет значение null, в моем случае мне нужно иметь возможность выбрать значение или изменить его, чтобы обновить мой объект ‹клиент› - person YK mar; 23.02.2018
comment
@YKmar смотрите мое обновление, речь идет о двухсторонней привязке, клиент еще не объявлен - person Haifeng Zhang; 23.02.2018
comment
что насчет этого ??? выберите id=idState name=state [ngModel]=user?.state (ngModelChange)=user==null || user.state=$event› - person YK mar; 23.02.2018
comment
@YKmar вам не нужно этого делать, вы можете напрямую использовать объект client - person Haifeng Zhang; 23.02.2018
comment
@haifzhan - Если вы измените свою последнюю строку, упомянув, что selectedClient также можно инициализировать до null, и определите значение первой опции как null, вы получите мой голос. :-) - person ConnorsFan; 23.02.2018
comment
@ConnorsFan Спасибо за ваш комментарий, это лучший выбор, если ничего не выбрано в начале :) - person Haifeng Zhang; 23.02.2018
comment
Истинный. В этом случае пустая опция, вероятно, не нужна (если OP не хочет показывать что-то вроде (Select a client), и в этом случае значение опции должно быть установлено на null). - person ConnorsFan; 23.02.2018
comment
да, у меня это работает нормально (большое спасибо), но я не понимаю, почему !!!!!! потому что это тот же объект с тем же значением - person YK mar; 23.02.2018
comment
когда я передаю объект selectedClient в [ngValue], несмотря на то, что значение не равно нулю, он не выбирает параметр, который он всегда получает по умолчанию - person YK mar; 23.02.2018