Вызов метода между независимыми компонентами с использованием BehaviorSubject в Angular 4+ - PullRequest
1 голос
/ 28 мая 2019

Каковы наилучшие практики для вызова метода между независимыми (без родительско-дочерних отношений) компонентами? Я взглянул на несколько примеров в сети, то есть, но некоторые из них используют BehaviorSubject, некоторые из них Observable, а некоторые из них не имеют завершающих наблюдаемых с помощью метода ngOnDestroy (). Есть пример использования на Как выполнить функцию из другого компонента, который НЕ является родственным братом первого компонента? , который я могу успешно применить к своему проекту Angular7, но я думаю, что есть лучший подход с использованием BehaviorSubject без какой-либо пропущенной точки. Любая идея?

1 Ответ

1 голос
/ 28 мая 2019

Определенно, наилучшим подходом является использование общего сервиса, как указано в статье. Вам не обязательно использовать BehaviorSubject. Вы можете использовать обычные темы, если хотите, или даже более классические методы получения и установки, если это вам более знакомо (хотя я настоятельно рекомендую использовать реактивный подход с использованием RxJS).

Сервисы обычно создаются как одиночные, поэтому у вас возникнет проблема с долго выполняющимися Observables, если вы не добавите для этого какую-то пользовательскую логику (например, создайте метод в сервисе для отписки и вызовите этот метод в любом из крючок компонента onDestroy).

Возможно, я неправильно понимаю ваш вопрос, но если вы беспокоитесь о разоблачении объектов поведения, вы всегда можете обернуть их в наблюдаемую и просто выставить видимую:

private myBehaviorSubject = new BehaviorSubject<boolean>(false);
myObservable = this.myBehaviorSubject.asObservable()

Надеюсь, что ответил на ваш вопрос.

...