【发布时间】:2019-06-02 01:14:15
【问题描述】:
我正在开发一个 Angular 7 应用程序。我的项目中发生了很多跨组件通信,并且组件没有父子关系。
据我所知,此类问题的一个很好的解决方案是服务。我可以有一个服务来处理应用程序范围内的所有通信(信息会非常不同),还是我必须为每对组件编写不同的服务?这似乎是很多重复的代码。否则,如果在需要发送或接收信息的每个组件中使用,在每次订阅时,它实际上都会订阅通过该服务发送的所有信息,这绝对不是所需的行为。
我的服务如下所示:
@Injectable({providedIn: 'root'})
export class ComponentService {
private subject = new Subject<any>();
sendData(data: any) {
this.subject.next(data);
}
getData(): any {
return this.subject.asObservable();
}
}
信息是这样发送的:
this.componentService.sendData(element);
并且像这样在另一个组件中接收:
constructor(private componentService: ComponentService) {
}
ngOnInit() {
this.componentService.getData().subscribe(data => data);
}
显然,如果 ComponentService 在整个应用程序中使用,这将使所有组件(与其他组件通信)订阅他们不希望接收的信息,也不需要接收。 应该使用什么方法?
【问题讨论】:
-
您是否考虑过调查ngrx?如果您要在整个应用程序中管理大量状态,那么它可能是一个不错的选择。
-
我对 React 不是很熟悉,据我所知,ngrx 就是从那里获得灵感的。不过我可能会看看。
标签: angular