enter image description here

Kode yang mengirim tindakan

  constructor(auth: AuthService, private store: Store) {
    this.userAuth = auth.signedIn.subscribe({ next: (user) => {
      this.user = user;
      this.store.dispatch(new SetUser(user));
    }});
  }

Tindakan definisi

import firebase from 'firebase/app';

export class SetUser {
  static readonly type = '[firebase.User | null] Add';

  constructor(public payload: firebase.User | null) {}
}

Dan implementasi toko saya:

    @Action(SetUser)
    add({ patchState }: StateContext<UserStateModel>, { payload }: SetUser): void {
        patchState({
            user: payload
        });
    }
@State<UserStateModel>({
    name: 'user',
    defaults: {
        user: null
    }
})
0
Badgy 5 April 2021, 13:42

2 jawaban

Jawaban Terbaik

Ini pada dasarnya adalah Dupe.

Masalahnya adalah Anda mencoba untuk menyimpan sesuatu di negara bagian yang tidak bisa dibekukan. Hanya mengkloningnya, atau menghemat hanya potongan yang Anda butuhkan. Lihat jawaban saya di sini.

1
Richard.Davenport 5 April 2021, 14:21

Membuat static readonly type = '[firebase.User | null] Add'; non-statis, seperti itu:

static type = '[firebase.User | null] Add';

Karena kita tidak dapat melihat seluruh kode Anda (mis. Anda memposting beberapa konstruktor tanpa kelas di sekitar) dan Anda tidak akan membiarkan kami (lihat komentar), itu tebakan terbaik saya setelah pesan kesalahan mengeluh tentang beberapa properti Readonly.

Kalau tidak, mungkin ada beberapa properti readonly di firebase.User, bagaimana dengan itu?

Anda memasukkan sesuatu ke dalam toko bahwa NGXS mencoba membeku. "Membekukan" melibatkan beberapa jenis timpa yang tidak diizinkan pada properti Readonly. Sekarang ada di Anda untuk menemukan apa yang adil di sana kalau-kalau saya dua petunjuk di atas tidak membantu.

1
SimplyComple0x78 5 April 2021, 13:46