更新到 {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";
}
}
将我的项目更新到 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>
自更新以来我还注意到了一些其他问题,但可能会在另一个问题中解决这些问题。
原来这是
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";
}
}