无法分配给对象“[object Object]”的只读 属性 'selected'
Cannot assign to read only property 'selected' of object '[object Object]'
我试图以编程方式取消选中我的复选框,但是当我绑定到来自 ngrx 存储的值时
我收到以下错误 Cannot assign to read only property 'selected' of object '[object Object]'
这是我的观点
<ul>
<li *ngFor="let language of languages">
<div>
<mat-checkbox [(ngModel)]="language.selected" color="primary">
{{ language.value }}
</mat-checkbox>
</div>
</li>
</ul>
和我的老师
this.languagesSub = this.store.select(getCreateLanguagesLanguages).subscribe(res => this.languages = res);
为什么我不能绑定到 language.selected?
如果您开启了严格模式,那么存储中的所有数据都是只读的。这意味着如果您想使用它们,您应该创建一个副本。
this.languagesSub = this.store.select(getCreateLanguagesLanguages)
.subscribe(res => this.languages = res.map(l => ({...l})));
// this will create a deep copy of all objects in languages array
您放入商店的每个对象都变得不可变。这意味着,所有的 setter 都被删除了。这就是 NgRx 保持不变性的方式,这是一个核心概念:你永远不会改变一个对象,你用一个“新版本”替换它。
所以,为了让它工作,你需要分派一个动作并使用你的减速器处理它。好好看看NgRx的《入门》
我试图以编程方式取消选中我的复选框,但是当我绑定到来自 ngrx 存储的值时
我收到以下错误 Cannot assign to read only property 'selected' of object '[object Object]'
这是我的观点
<ul>
<li *ngFor="let language of languages">
<div>
<mat-checkbox [(ngModel)]="language.selected" color="primary">
{{ language.value }}
</mat-checkbox>
</div>
</li>
</ul>
和我的老师
this.languagesSub = this.store.select(getCreateLanguagesLanguages).subscribe(res => this.languages = res);
为什么我不能绑定到 language.selected?
如果您开启了严格模式,那么存储中的所有数据都是只读的。这意味着如果您想使用它们,您应该创建一个副本。
this.languagesSub = this.store.select(getCreateLanguagesLanguages)
.subscribe(res => this.languages = res.map(l => ({...l})));
// this will create a deep copy of all objects in languages array
您放入商店的每个对象都变得不可变。这意味着,所有的 setter 都被删除了。这就是 NgRx 保持不变性的方式,这是一个核心概念:你永远不会改变一个对象,你用一个“新版本”替换它。 所以,为了让它工作,你需要分派一个动作并使用你的减速器处理它。好好看看NgRx的《入门》