2017-01-30 6 views
0

В моем приложении Angular2 я есть редуктор для добавления повторы на комментарий:Угловые редукторы ngrx: невозможно прочитать свойство concat() неопределенного?

Replays.reducer.ts:

case ADD_REPLAY: 
    let index_replay = state 
     .map(review => review.id) 
     .indexOf(action.payload.replayTo); 
    return [ 
     ...state.slice(0, index_replay), 
     Object.assign({}, state[index_replay], { 
     replays: [...state[index_replay].replays, action.payload] 
     }), 
     ...state.slice(index + 1) 
    ]; 

    default: 
    return state; 

} 

Когда комментарий уже содержат повторы, я могу добавить переигровку Whithout проблема, но когда массив повторений, который находится в массиве комментариев, пуст, у меня есть ошибка: невозможно прочитать свойство concat undefined (возможно, из-за оператора спреда).

Как я могу избежать такого поведения?

ответ

1

Проблема заключается в том, что вы вызываете .concat на пустой массив (оператор с расширением === .concat), и, таким образом, вы получаете неопределенную ошибку.

Попробуйте это:

const replays = state.index_replay ? : state.index_replay : [];

Назначает либо state.index_replay или пустой массив повторы.

Далее, используйте массив replays в операторе спред.

Смежные вопросы