Подтвердить что ты не робот

Правильное использование оператора Элвиса в 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

Какое обстоятельство я могу использовать оператор в представлении компонентов?

Приветствия

4b9b3361

Ответ 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.