How to add previous predictions for new predictions in LSTM?
For your problem, Keras is telling you that the input vectorhas 4 dims, which is invalid, because for a LSTM model you need a input vector with (batch_size,num_time_steps,feature_space_dimension). Check the shape of the input vector, you may be adding an extra 1 dimension with the reshape operator

Other thing is the approach your are taking, which may be valid, but usually this problem is tackle with a specific type of models: Sequence-to-Sequence models, using LSTM encoder-decoder architecture. 

This models try to predict a sequence

$Y = [x_{(t=1)}, x_{(t=2)},...,x_{(t=t+N)}]$ 

from a sequence of previous values 

$X = [x_{(t=0)}, x_{(t=-1)},...,x_{(t=t-M)}]$ 

Note that the number of samples in each sequence can be different

In these models, the input sequence $X$  is fed into a LSTM encoder, which captures its dynamics creating a new context feature vector $F$. This new feature vector are then fed to the LSTM decoder as initial state, and then, the prediction $\hat y(t)$ of cell for time $t$ is used as input for the cell for time $t+1$ to generate the predicted value $\hat y(t+1)$

One key difference is, that Seq2seq models should be more efficient than your approach, since it performs the prediction of the N future values with a single run of the model. It could be interesting if you try this approach out and to compare it with yours

You can visit a Keras tutorial for these type of models here