Новое для ngrx/Store и редуктора. В принципе, у меня есть этот редуктор:
import {StoreData, INITIAL_STORE_DATA} from "../store-data";
import {Action} from "@ngrx/store";
import {
USER_THREADS_LOADED_ACTION, UserThreadsLoadedAction, SEND_NEW_MESSAGE_ACTION,
SendNewMessageAction
} from "../actions";
import * as _ from "lodash";
import {Message} from "../../shared-vh/model/message";
import {ThreadsService} from "../../shared-vh/services/threads.service";
export function storeData(state: StoreData = INITIAL_STORE_DATA, action: Action): StoreData {
switch (action.type) {
case SEND_NEW_MESSAGE_ACTION:
return handleSendNewMessageAction(state, action);
default:
return state
}
}
function handleSendNewMessageAction(state:StoreData, action:SendNewMessageAction): StoreData {
const newStoreData = _.cloneDeep(state);
const currentThread = newStoreData.threads[action.payload.threadId];
const newMessage: Message = {
text: action.payload.text,
threadId: action.payload.threadId,
timestamp: new Date().getTime(),
participantId: action.payload.participantId,
id: [need a function from this service: ThreadsService]
}
currentThread.messageIds.push(newMessage.id);
newStoreData.messages[newMessage.id] = newMessage;
return newStoreData;
}
Проблема заключается в функции редуктора, я не знаю, как вводить инъекционную услугу, которую я создал в другом файле, и использовать функцию внутри нее. Часть id - мне нужно сгенерировать идентификатор push-кода firebase, используя такую функцию, как this.threadService.generateID()...
Но так как это функция, у меня нет конструктора для использования DI, и я понятия не имею, как получить функции в threadService!