Более одного постоянного экземпляра службы - PullRequest
1 голос
/ 24 сентября 2019

В моем приложении Angular у меня есть два компонента, Recordings и Participants, которые совместно используют общий подкомпонент, RecordingList.

Я хочу, чтобы каждый из двух компонентов имел отдельный экземпляриз списка записи.Эти экземпляры также должны быть постоянными в том смысле, что, когда пользователь посетил другую часть приложения и вернулся, списки все еще присутствуют.Так что мне нужно два экземпляра структуры данных списка записей.

Есть проблема:

Если я предоставлю RecordingListService, который содержит эту структуру данных на глобальном уровне, это будетпостоянный, но будет только один экземпляр.Если я предоставлю это на уровне модуля, каждый раз при создании компонента будет происходить экземпляр, что происходит довольно часто.Мне нужен способ сообщить компоненту RecordingList доступ к одному из двух необходимых экземпляров, в зависимости от того, содержится ли он в компоненте Recordings или Participants.

Ответы [ 2 ]

2 голосов
/ 24 сентября 2019

вы можете предоставить услугу тремя способами: в @Injectable, как

@Injectable({
 providedIn: 'root',
})

, и будут доступны для каждого компонента, поскольку установлены на корневом уровне.второй способ;

@NgModule({
  providers: [
  BackendService,
  Logger
 ],
 ...
})

эта служба будет доступна только для этого ngModule (у вас есть только один, поэтому все в порядке) и 3-го пути:

@Component({
  selector:    'app-hero-list',
  templateUrl: './hero-list.component.html',
  providers:  [ HeroService ]
})

я думаю, если вы предоставите его на уровне компонента(общий подкомпонент, должен работать)

0 голосов
/ 24 сентября 2019

Попробуйте предоставить услугу в компоненте.

Например:

@Component({
  selector:    'app-recordings',
  templateUrl: './recordings.component.html',
  providers:  [ RecordingList ]
})

См. Документацию здесь: https://angular.io/guide/hierarchical-dependency-injection#providing-services-in-component

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...