问题描述
调度动作的代码
constructor(auth: AuthService,private store: Store) {
this.userAuth = auth.signedIn.subscribe({ next: (user) => {
this.user = user;
this.store.dispatch(new SetUser(user));
}});
}
动作定义
import firebase from 'firebase/app';
export class SetUser {
static readonly type = '[firebase.User | null] Add';
constructor(public payload: firebase.User | null) {}
}
还有我的商店实现:
@Action(SetUser)
add({ patchState }: StateContext<UserStateModel>,{ payload }: SetUser): void {
patchState({
user: payload
});
}
@State<UserStateModel>({
name: 'user',defaults: {
user: null
}
})
解决方法
使 static readonly type = '[firebase.User | null] Add';
非静态,如下所示:
static type = '[firebase.User | null] Add';
因为我们看不到你的整个代码(例如你发布了一些没有任何类的构造函数)并且你不会让我们看到(见评论),这是我在抱怨一些只读属性的错误消息之后最好的猜测。
否则可能在 firebase.User
中有一些只读属性,那怎么样?
您在 NGXS 试图冻结的商店中插入了一些东西。 “冻结”涉及某种类型的覆盖,这在只读属性上是不允许的。现在由您来查找那里的只读内容,以防我上面的两个提示没有帮助。
,这基本上是一个 dupe。
问题是您试图以无法冻结的状态存储某些东西。只需克隆它,或只保存您需要的部分。请参阅我的回答 here。