更新到 {N} 2.3.0 和 Angular 2.1.2 后数据绑定损坏

Broken data binding after updating to {N} 2.3.0 and Angular 2.1.2

将我的项目更新到 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>

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

原来这是的变体。我需要引用 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,
    ...]
  ...

您还有一个小语法错误,因为您的 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";
    }
}