#javascript #angular #typescript
#язык JavaScript #угловой #машинописный текст
Вопрос:
Я могу что-то упустить, и люди обычно спрашивают «Как», а не «Почему», когда я гуглю это
Но какой смысл на самом деле создавать несколько экземпляров одной и той же службы, где у каждого экземпляра одни и те же функции, одни и те же переменные?
Комментарии:
1. С помощью механизма впрыска зависимости мы не создаем несколько экземпляров, инжектор будет искать доступный экземпляр и вводить его в компонент.
2. Мне нужно немного больше ясности в вашем вопросе, прежде чем я дам ответ. Вы хотите знать, «При каких обстоятельствах мы хотели бы создать несколько экземпляров одной и той же службы (чего не происходит в случае Angular в целом)» . ??? В общем случае приложение использует один экземпляр службы, хотя бывают случаи, когда мы получаем несколько экземпляров одной и той же службы в Angular. Итак, не могли бы вы более четко сформулировать свой вопрос, пожалуйста ? Я дам соответствующий ответ
3. Вы прекрасно сформулировали вопрос другими словами: «При каких обстоятельствах мы хотели бы создать несколько экземпляров одного и того же сервиса» ?
Ответ №1:
Чтобы удержать государство.
Представьте, что у вас есть приложение, в котором есть несколько вкладок. Допустим, они отображают информацию об автомобиле, поэтому на каждой вкладке есть свой автомобиль. Вы предоставляете услугу в компоненте «корневая вкладка», поэтому экземпляр этой службы будет доступен всем подкомпонентам/службам на этой вкладке, а не за ее пределами. Таким образом, вы пишете сервис, в котором хранятся данные одного автомобиля, что снижает сложность обслуживания.
Небольшой пример
@Injectable() export class CarService { color = ''; }
@Component({ ... providers: [CarService] }) export class TabComponent { constructor(private car: CarService) {} getColor() { return this.car.color } }
Таким образом, вы можете иметь
TabComponent getColor() -gt; red TabComponent getColor() -gt; blue TabComponent getColor() -gt; black
Комментарии:
1. Кажется, я понял, спасибо за краткое объяснение