我创建了两个组件。第一个包含一个按钮,第二个包含一个下拉菜单。当用户点击这个按钮(在第一个组件上),我想显示菜单(在第二个组件上)。
是否可能(以及如何?)调用"按钮所在组件的菜单,还是我应该将它们合并到同一个组件中?
提前感谢。
是的,这是可能的,您可以使用rxjs中的BehaviorSubject
。
创建一个服务文件,例如custom.service.ts:
buttonClickSubject: Subject<Boolean> = new BehaviorSubject(null);
buttonClick$: Observable<Boolean> = this.buttonClickSubject.asObservable();
Comp A (on键点击,呼叫Subject
中的next()
):
this.service.buttonClickSubject.next(true);
比较B(在constructor
内部订阅Observable
):
this.service.buttonClick.subscribe(data => {
//write you menu code here
});
回答你的第二个问题:
这完全取决于你的设计。如果你的菜单Component
足够大,你可以在不同的地方重新发布,那么你绝对可以创建一个新的Component
,否则不需要。