以编程方式设置angular 2中组件的内容

以编程方式设置angular 2中组件的内容,angular,router-outlet,angular2-ngcontent,Angular,Router Outlet,Angular2 Ngcontent,我创建了一个简单的窗口组件,它有一个标题并显示一些内容。我的应用程序一次只能显示一个窗口,所以我把它放在我的应用程序的根目录中,只在需要时更改它的内容 由于我需要能够在应用程序中的不同位置设置窗口内容,我创建了一个组件绑定到的服务。通过这种方式,我可以在需要的任何地方调用服务上的方法,并更改窗口组件的属性 但是,我不知道如何使用该服务,而是指定一个组件的实例,该实例将显示为窗口内容。例如,我是否可以通过编程方式为窗口组件设置ng内容 我当前的解决方法是在窗口组件中指定所有可能的内容,并使用*ng

我创建了一个简单的窗口组件,它有一个标题并显示一些内容。我的应用程序一次只能显示一个窗口,所以我把它放在我的应用程序的根目录中,只在需要时更改它的内容

由于我需要能够在应用程序中的不同位置设置窗口内容,我创建了一个组件绑定到的服务。通过这种方式,我可以在需要的任何地方调用服务上的方法,并更改窗口组件的属性

但是,我不知道如何使用该服务,而是指定一个组件的实例,该实例将显示为窗口内容。例如,我是否可以通过编程方式为窗口组件设置
ng内容

我当前的解决方法是在窗口组件中指定所有可能的内容,并使用
*ngIf
选择正确的内容,如下所示:

<contentA *ngIf="windowService.getContent()='a'"></contentA>
<contentB *ngIf="windowService.getContent()='b'"></contentB>
<contentC *ngIf="windowService.getContent()='c'"></contentC>

它工作得很好,但列表越来越长,很难维护。我也不喜欢让我的窗口组件与所有其他组件耦合在一起,而这些组件实际上与我无关。此外,每个不同的内容都有自己的输入参数,现在窗口服务和组件也需要跟踪这些参数

所以我的问题是;在angular中是否有我不知道的解决此类问题的功能,或者我应该以另一种方式处理它?


我想到的是在窗口组件中放置一个
ng content
标记,然后让服务用我需要的东西替换该标记。或者我应该在窗口组件内放置一个
路由器插座
?我也不喜欢这种方法,因为更改内容不应该算作导航。我已经有了一个与此组件无关的出口。

您当前的方法确实效率低下,难以扩展

你应该调查一下

希望这有帮助

更新请注意,在大多数情况下,路由将是您所需要的。动态组件非常适合(顾名思义)动态内容,您不想更改应用程序状态(即url)。我之所以提到动态组件,是因为您提到您已经在使用路由器,并且正在寻找不同的解决方案(尽管从技术上讲,您可以有嵌套路由,甚至弹出路由)

我创建了一个简单的窗口组件,它有一个标题并显示一些内容。我的应用程序一次只能显示一个窗口,所以我把它放在我的应用程序的根目录中,只在需要时更改它的内容

这个场景的主要角度特征是路由器。其目的是在页眉和页脚中路由特定组件

例如,这里是我的主页及其标题和菜单。它当前路由到电影列表组件,因此在菜单下显示:

如果用户单击某个特定产品,则路由会自动将电影列表组件替换为相应的移动详细信息组件:


这与您需要做的匹配吗?

谢谢,在简单的情况下,这会起作用。然而,在我的具体案例中,我已经有了您描述的设置,但我还需要显示一个具有动态内容的可重用的“弹出式”//模式窗口。假设您的示例中的“注销”按钮打开一个模式窗口,询问您是否确定要注销,而“编辑”按钮打开同一个窗口,但现在内容将是一个编辑器。似乎我需要使用Angular的动态组件来实现这一点。作为一个网络用户,我真的不喜欢模态。。。尤其是在电话上使用网站时。所以我从不使用它们。