更新为{N} 2.3.0和Angular 2.1.2

时间:2016-11-01 14:39:28

标签: angular nativescript angular2-nativescript

将我的项目更新为Nativescript 2.3.0和Angular 2.1.2后,使用ngModel的数据绑定不再适用于我的Switch。如果我绑定到[checked]和(propertyChange)它就可以工作。

我在一个新的示例项目中重复了这个问题。这是对Nativescript或Angular进行的更改还是其他内容?

我正在使用:

<Switch (ngModelChange)="onChange($event)" [ngModel]="model.switchValue"></Switch>
切换开关时,

onChange()不再触发。

这似乎有效:

<Switch (propertyChange)="onChange($event)" [checked]="model.switchValue"></Switch>

我还注意到自更新以来的其他一些问题,但可能会在另一个问题中解决这些问题。

2 个答案:

答案 0 :(得分:1)

事实证明,这是this question的变体。我需要引用NativeScriptFormsModule。起初我尝试了Angular的FormsModule,但得到了错误:

No value accessor for form control with unspecified name attribute

修复是在app.module.ts中导入NativeScriptFormsModule:

import { NativeScriptFormsModule } from 'nativescript-angular/forms';

@NgModule({
  imports: [
    NativeScriptFormsModule,
    ...]
  ...

答案 1 :(得分:0)

您的语法错误也很小,因为您的ngModelChange缺少结束引号。

这个例子正在我身边 - 这是我测试过的代码:

page.xml

<Label [text]="thirdSwitchState" textWrap="true"></Label>
<Switch [ngModel]="thirdSwitchValue" (ngModelChange)="onChange($event)"></Switch>

page.ts

public thirdSwitchValue = true;
public thirdSwitchState = "ON";

public onChange(result) {
    if (result) {
        this.thirdSwitchState = "ON";
    }
    else {
        this.thirdSwitchState = "OFF";
    }
}