Правильное использование оператора Элвиса в Angular2 для представления компонента Dart
Я вижу в Angular2 Dart Angular для Dart Cheat Sheet (v2.0.0-beta.2), что оператор Элвиса поддерживается.
Я пытаюсь использовать его в представлении компонентов, но кажется, что здесь это запрещено.
Учитывая
.html
<div
<label
for = "first">First<span class = "require">*</span></label>
<input
type = "text"
[(ngModel)] = "name?.first"
id = "first">
.dart
...
Name name = new Name();
...
Запуск приложения дает следующую ошибку:
трассировка ошибок
Transform TemplateCompiler on
epimss_ng2_reg|lib/components/name_component.ng_meta.json threw error: Template parse errors:
Parser Error: The '?.' operator cannot be used in the assignment at column 13 in [name?.first=$event] in [email protected]:12 ("
<input
type = "text"
[ERROR ->][(ngModel)] = "name?.first"
#firstCtrl = "ngForm"
[ngFormControl] = "nameForm"): [email protected]:12
Какое обстоятельство я могу использовать оператор в представлении компонентов?
Приветствия
Ответы
Ответ 1
Как говорится в сообщении об ошибке, он не может использоваться для назначения. Где должно присваиваться значение, когда name
равно null?
Если вы разделите короткую форму на более явную.
[ngModel]="name?.first" (ngModelChange)="name.first=$event"
то вы можете использовать оператор elvis.
Ответ 2
В случае, если имя равно null, вы также можете сделать это
<input type="text" *ngIf="name" [(ngModel)]="name.first">
Ответ 3
Перейдите к своему классу component.ts
и инициализируйте свойства модели ""
или любым другим подходящим значением по умолчанию.
Хорошим местом будет метод ngOnInit()
.
Это помогло мне на Angular 5.