【发布时间】:2021-07-04 15:57:34
【问题描述】:
我正在尝试从 NGRX 存储中克隆数据,以便编辑它们。
声明
public stuff$: Observable<StuffModel> | undefined;
public editableStuff$: Observable<StuffModel> | undefined;
TS
ngOnInit() {
this.editableStuff$ = Object.assign(
{},
(this.stuff$ = .........
id === 'newStuff'
? of(this.newStuff)
: this.store.pipe(
...............
select((entities) => entities[id] ?? ({} as StuffModel))
)
)
))
);
}
HTML
<ng-container *ngIf="editableStuff$ | async as stuff">
...
<input
matInput
placeholder="Stuff"
[(ngModel)]="stuff.stuffName"
/>
问题是我收到错误ERROR Error: InvalidPipeArgument: '[object Object]' for pipe 'AsyncPipe' 并且不知道为什么。当我使用<ng-container *ngIf="stuff$ | async as stuff"> 时,它可以工作,但我怎样才能使它与editableStuff$ 一起工作?当我使用JSON.stringify() 控制台记录机器人变量stuff$ 和editabelStuff$ 时,它们是相同的。
【问题讨论】:
-
你正在使用
Object.assign,所以我不认为你为什么期望它是一个可观察的? Object assign 创建一个对象,而不是 observable。
标签: angular typescript observable clone ngrx