我有一个类型化对象数组 - 所有对象都是类型:TodoModel。当我过滤它们时,要调整UI上的内容,您必须创建一个新数组并调整为过滤器更改的项目的属性以在angular2中重新过滤。当我创建新数组并添加更改的对象时,该对象不是类型,而数组中的其他2个对象仍然是类型:TodoModel。我无法弄清楚如何为新对象指定类型:(提前感谢您的帮助!
这是逻辑和代码的代码。下面我有一个突变阵列的前后屏幕截图:
case 'TOGGLE_TODO':
const todo: ITodoModel = payload;
const i = state.indexOf(todo);
const status = todo.status == "started" ? "completed" : "started";
const toggledTodo:ITodoModel = Object.assign(<ITodoModel>{}, todo, {status});
state = [
//... = spread operator - bascially loops through the array
...state.slice(0,i), // check items before
toggledTodo, // clicked item
...state.slice(i + 1) // check items after
];
console.log('toggle state');
console.log(state);
return state;
答案 0 :(得分:2)
如果您有权访问TodoModel构造函数,那么您可以使用以下内容:
const toggledTodo:ITodoModel = Object.assign(new TodoModel(), todo, {status})