【发布时间】:2020-03-08 19:59:26
【问题描述】:
我正在使用primeng 可编辑表和ngrx/store。表值来自商店:results。
父组件:
this.results$ = store.pipe(select(mySelectors.results));
使用 async 将其传递给子组件[results]="results$|async"。
在子模板中:
<p-table [value]="results">
...
<ng-template pTemplate="body" let-rowData let-rowIndex="rowIndex">
<tr [pSelectableRow]="rowData">
...
<td pEditableColumn>
<p-cellEditor>
<ng-template pTemplate="input">
<input pInputText type="text" [(ngModel)]="rowData.name"> // it's about this input
</ng-template>
<ng-template pTemplate="output">
{{rowData.name}}
</ng-template>
</p-cellEditor>
</td>
</tr>
</ng-template>
结果模型是这样的:
{
...
name: string;
...
}
我使用了ngrx-store-freeze。现在的问题是,商店的结果不能直接改变。因此,即使我尝试使用操作来更改商店中的值,但我无法从带有[(ngModel)]="rowData.name" 的输入标签中获取更改后的值,因为它是只读的。
那么如何从输入标签中获取更改后的值,或者有更好的方法吗?我知道 ngModel 与 ngrx/store 有点冲突,我尝试深拷贝 results 然后将其绑定到表,但它不起作用,深拷贝仍然是只读的。
我被困在这里了。请帮帮我
【问题讨论】:
-
我不明白的最大问题是:store中的值是只读的,但是为什么我深拷贝后仍然无法修改它?
标签: javascript angular typescript redux ngrx