小编Amr*_*uta的帖子

类型错误:无法分配给打字稿中对象“[object Array]”的只读属性“0”

我正在研究 angular 8。

  1. 我有一个显示表格的页面。该表显示来自对象数组的数据,taskList组件以@Input().
  2. 我对这个表的列有一个排序功能。
  3. 我在每一行上也有一个删除选项。当我单击删除选项时,它会调用 api 来删除行,然后再调用一次来获取tasklist数组。这是相同的效果
  @Effect()
  DeleteTask$: Observable<Action> = this.actions$.pipe(
    ofType(importActions.DELETE_TASK),
    switchMap(params =>
      this.globalService
        .deleteTask(params)
        .mergeMap(deleteSuccess => {
          return from([
            new importActions.DeleteTaskSuccess(deleteSuccess),
            new importActions.LoadTaskList(),
          ]);
        })
        .catch((error, caught) => {
          return Observable.of(new GlobalError(error));
        }),
    ),
  );
Run Code Online (Sandbox Code Playgroud)

我的问题是当我在第一页加载时排序功能工作正常。但是,如果我删除一行然后在删除后获取任务列表,则会出现以下错误:

ERROR Error: Uncaught (in promise): TypeError: Cannot assign to read only property '0' of object '[object Array]'
TypeError: Cannot assign to read only property '0' of object '[object Array]'
Run Code Online (Sandbox Code Playgroud)

根据错误消息,我的代码中的以下函数给出了错误

ERROR Error: Uncaught (in …
Run Code Online (Sandbox Code Playgroud)

javascript typescript ngrx angular

6
推荐指数
2
解决办法
1万
查看次数

NgRx/Effects 不触发 Reducer

我知道问题的标题含糊不清,但不幸的是我不完全知道是什么导致了我的问题,所以请耐心等待。

我刚刚开始处理一个小的 Angular 8 任务,它也使用 NgRx/Store 和 NgRx/Effects。我正在Book使用getBooks函数获取一组对象。我的代码如下(没有把输入端口放在任何地方只是为了使代码部分更短)

book.component.ts

export class BookComponent {

  constructor(private booksService: BooksService, public store: Store<BooksState>) {
    this.books$ = store.pipe(select('books'));
  }

  books$: Observable<BooksState>;
  BooksSubscription: Subscription;
  booksList: Book[];

  ngOnInit() {
    this.BooksSubscription = this.books$
      .pipe( map(x => { this.booksList = x.Books; }) ).subscribe();
    this.store.dispatch(BooksActions.BeginGetBooksAction())
  }
}
Run Code Online (Sandbox Code Playgroud)

书.service.ts

import { Injectable } from '@angular/core';
import booksData from "../../books.json";

@Injectable()
export class BooksService {
  constructor() { }

  getBooks(){
      return booksData;
  }
}
Run Code Online (Sandbox Code Playgroud)

booksDataBook我从json …

typescript ngrx-effects angular ngrx-store angular8

2
推荐指数
1
解决办法
1301
查看次数

如何将 NgRx 8 操作与 NgRx 7 减速器一起使用

我正在NgRx我的新 Angular 8 项目中使用该库。我被告知他们使用createActionie创建操作NgRx 8,但他们使用NgRx 7. 我接到了一项任务,其中我使用了NgRx 8我的减速器,现在我必须将其更改为NgRx 7。我的动作和减速器如下:

书本.actions.ts

import { createAction, props } from "@ngrx/store";
import { Book } from "./book";

export const BeginGetBooksAction = createAction("BeginGetBooks");

export const SuccessGetBooksAction = createAction(
  "SuccessGetBooks",
  props<{ payload: Book[] }>()
);

export const BeginAddBookAction = createAction(
  "BeginAddBook",
  props<{ payload: Book }>()
);

export const SuccessAddBookAction = createAction(
  "SuccessAddBook",
  props<{ payload: Book[] }>()
);
Run Code Online (Sandbox Code Playgroud)

书本.reducer.ts

import { Action, createReducer, on } …
Run Code Online (Sandbox Code Playgroud)

typescript ngrx angular ngrx-store angular8

2
推荐指数
1
解决办法
929
查看次数