我创建了一个简单的窗口组件,它有一个标题并显示了一些内容。我的应用程序一次只会显示一个窗口,所以我将它放在我的应用程序的根目录中,并且只在需要时更改其内容。
由于我需要能够从应用程序的各个位置设置窗口内容,因此我创建了我的组件绑定到的服务。这样我就可以从我需要的任何地方调用服务上的方法,并更改窗口组件的属性。
然而,我不知道如何处理该服务,是指定要显示为窗口内容的组件实例。我可以以某种方式例如以编程方式设置ng-content
窗口组件吗?
我当前的解决方法是在窗口组件中指定所有可能的内容,并选择正确的内容,*ngIf
如下所示:
<contentA *ngIf="windowService.getContent()='a'"></contentA>
<contentB *ngIf="windowService.getContent()='b'"></contentB>
<contentC *ngIf="windowService.getContent()='c'"></contentC>
它工作得很好,但是列表越来越长并且难以维护。我也不喜欢将我的窗口组件与所有其他与它无关的组件结合在一起。此外,每个不同的内容都有自己的输入参数,现在窗口服务和组件也需要跟踪这些参数......
所以我的问题是;是否有一个我不知道的角度特性可以解决这些问题,或者我应该以另一种方式处理它?
想到的事情是ng-content
在窗口组件中放置一个标签,并以某种方式让服务用我需要的东西替换那个标签。或者我应该router-outlet
在我的窗口组件内放置一个?我也不喜欢这种方法,因为更改内容不应该算作导航。我已经有了一个与这个组件无关的出口。