Я нашел так много разных ответов на эту проблему, и я всегда ищу лучшие практики.
Я создал службу, для которой мне нужно несколько экземпляров. Эта служба принимает некоторые данные в качестве входных данных и создает из них csv.
Ну, я попробовал это с очень стандартной инъекционной службой.
@Injectable
export class ExportCsv {
public constructor(Data: any) {
// Do something and spit out csv
}
}
Проблема в том, что если я предоставлю этов моем компоненте данные, очевидно, не сбрасываются и в основном просто добавляются, поскольку существует только один экземпляр моего сервиса. Итак, если этот компонент создает несколько CSV, каждый CSV будет иметь некоторые данные, которых там быть не должно.
Я нашел несколько решений: - Создать какую-то фабрику - Сделать сервис не инъекционным и не предоставлятьЭто. Таким образом, он будет обрабатываться как стандартный класс, и каждый раз, когда я его использую, мне приходится создавать экземпляр этого класса (новый ExportCsv) - просто не называйте это сервисом и делайте с ним то же самое, что и с «не инъецируемым»"service
Есть ли какая-то лучшая практика для моей проблемы? Является ли услуга, которая не будет предоставляться через провайдеров и не подлежит инъекции, на самом деле все еще услуга?