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

#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. Кажется, я понял, спасибо за краткое объяснение