我使用的是Nativescript + Angular
| nativescript │ 3.4.3 │ 3.4.3 │ Up to date │
│ tns-core-modules │ 3.4.1 │ 3.4.1 │ Up to date │
│ tns-android │ 3.4.2 │ 3.4.2 │ Up to date │
我使用的代码使用ngModel
界面创建自定义ControlValueAccessor
值。
如您所见,我有2个TextFields和一个显示模型值的json。
这是我使用值激活组件的方式:
home.component.ts
export class HomeComponent {
dataModel = {
a:1,b:2
};
...
}
home.component.html
<StackLayout >
<app-flag [(ngModel)]="dataModel"></app-flag>
</StackLayout>
- 这是实际的组件标记代码:
flag.component.html
<GridLayout rows="auto,auto,auto" columns="*" >
<TextField [(ngModel)]="innerValue.a" row="0" ></TextField>
<TextField [(ngModel)]="innerValue.b" row="1"></TextField>
<Label textWrap="true" text="{{innerValue | json}}" row=3></Label>
</GridLayout>
flag.component.ts
export class FlagComponent implements ControlValueAccessor {
innerValue= { a: 1, b: 2 }
writeValue(value: any) {
this.innerValue = value;
}
...}
此代码工作正常,并在json中显示值。但问题是在t = 0时,出现错误:
ERROR TypeError:无法读取属性&#39; a&#39;为null
在测试之后 - 似乎首先 - writeValue
中的值为空。
问题
有些东西不对。即使writeValue
值出现延迟 - 它仍然具有带初始值的公共属性:
那怎么来null
?