在Angular2中正确使用Elvis运算符用于Dart组件的视图

st_*_*rke 13 angular2-forms angular

我在Angular2 Dart Angular中看到了Dart Cheat Sheet(v2.0.0-beta.2),支持Elvis运算符.

我试图在组件视图中使用它,但似乎这里不允许.

特定

html的

  <div
    <label
        for = "first">First<span class = "require">*</span></label>
    <input
        type = "text"
        [(ngModel)] = "name?.first"
        id = "first">
Run Code Online (Sandbox Code Playgroud)

.镖

...
Name name = new Name();
...
Run Code Online (Sandbox Code Playgroud)

运行该应用程序会出现以下错误:

错误跟踪

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 NameComponent@39:12 ("
        <input
            type = "text"
            [ERROR ->][(ngModel)] = "name?.first"
            #firstCtrl = "ngForm"
            [ngFormControl] = "nameForm"): NameComponent@39:12
Run Code Online (Sandbox Code Playgroud)

在组件的视图中,我可以在什么情况下使用运算符?

干杯

Gün*_*uer 45

正如错误消息所示,它不能用于分配.当name值为null 时,应将值分配到何处?如果将简短表单拆分为更明确的表单

[ngModel]="name?.first" (ngModelChange)="name.first=$event"
Run Code Online (Sandbox Code Playgroud)

然后你可以使用elvis运算符.


joh*_*y 5 6

如果name为null,您也可以执行此操作

<input type="text" *ngIf="name" [(ngModel)]="name.first">
Run Code Online (Sandbox Code Playgroud)