Angular 2如何分别加载2个App根组件

2024-01-21

是否可以加载 2 个不同的根组件(不是在页面中并排)。 找一个笨蛋的例子 http://plnkr.co/edit/XSJ8ac,唯一的区别是两个根组件都加载在单个页面中。

<body>
  <my-app>Loading...</my-app>
  <my-sec>Loading...</my-sec>
</body>

我想要实现的是,每个组件都有自己的布局,并且不与 app.component 共享。

示例:app.component 将具有普通用户的视图模板,而 admin.component 将具有仪表板模板。

这是可以实现的吗?或者我必须为此创建 2 个单独的项目?(一个用于普通视图,另一个用于仪表板视图)


为此,更好的方法可能是使用 NgComponentOutlet 指令。在app.component.html中只需要使用:

<ng-container *ngComponentOutlet="appLayoutComponent"></ng-container>

然后在 app.component.ts 中,您需要提供要在运行时渲染的组件:

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent {
  public appLayoutComponent: BaseLayoutComponent;

如果您希望所有不同的布局组件都具有通用功能,您也许可以巧妙地继承一些基本布局组件。

作为使用示例,您可以在 ngOnInit() 方法中订阅路由器事件:

ngOnInit() {
    this.router.events.subscribe((data) => {
      if (data instanceof RoutesRecognized) {
        this.appLayoutComponent = data.state?.root?.firstChild?.data?.layout;
      }
    });
  }

最后在 app-routing.module.ts 声明中传递您想要为模块提供的确切布局数据组件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 2如何分别加载2个App根组件 的相关文章

随机推荐

  • 用于将数据从业务机会复制到相关自定义对象的自定义按钮

    我有一个自定义对象 用于映射到机会的产品设置 这是一种一对多的关系 一个机会映射到许多设置对象 但一个设置对象仅映射到一个机会 机会有一些设置字段需要充当相关自定义对象的默认值 不幸的是 我不能只在公式中指定它们 出现错误 我想做的是有一个
  • 使用钩子时等待状态更新

    如何使用 Hooks 等待状态更新 当我提交表格时 我需要检查是否termsValidation在运行一些附加代码之前为 false 如果状态刚刚发生变化 它就不会注意到这一点 import React useState from reac
  • 在常见情况下什么时候适合使用 Core Animation 而不是 UIView 动画

    这与许多小错误有关 这些小错误可能被一个人通常认为是次要的 但另一个人则认为是重大错误 我越来越注意到的是 当使用所有口味时UIView animateWithDuration 它实际上修改了不必要的东西 例如我的视图的多个属性 以执行简单
  • 如何从右向左滑动切换div?

    请看这个小提琴http jsfiddle net MKwwH http jsfiddle net MKwwH 我想要链接images link从右向左滑动切换 document ready function hidden hide soun
  • 我可以使用“com.apple.springboard.lockcomplete”通知吗?

    我试图找到设备锁定状态 因为 UIApplicationState 在锁定设备时给出了错误的状态 它给出了 UIApplicationStateActive 几秒钟 我找到了一种解决方案达尔文通知 https developer apple
  • Visual Studio 还是 GCC? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Java 中对象的链式调用和继承

    当声明链式调用的方法时 通常它returns this在该方法的末尾 所以我声明 public class Foo public Foo setTitle String title return this And public class
  • Nullable 的大小是多少?

    所以 实际上有几个问题 An int Int32 被指定为 显然 32 位 怎么样int Nullable
  • 关闭 STRICT_TRANS_TABLES 安全吗?

    我的 PHP mySQL 后端托管在外部站点上 自 2014 年以来一直运行良好 最近 它开始抛出 字段没有默认值 错误 我检查了配置并发现STRICT TRANS TABLES 这会在某些情况下为没有默认值的字段提供这些错误 我的问题是删
  • 如何在 Jmeter BeanShell 中循环 HTTP 请求并每次更新变量

    我有 2 个 HTTP 请求 一个用于从 api 获取数据 另一个用于将数据 POST 到 api GET 请求以 JSON 形式带来多个用户 POST 请求需要每个用户 1 个请求 因此我需要 根据用户数量多次循环相同的 POST 请求
  • 相机原生代码底层逻辑

    我试图更好地理解相机本机代码的底层逻辑 但在寻找方法定义时我似乎陷入了死胡同Camera connect 和其他声明的函数Camera h 我遵循的步骤如下 In the master branch I located Camera jav
  • Stripe“简单”结帐 - 检测是否单击关闭按钮

    我已经集成了条纹结账 https stripe com docs checkout进入我的网站 除了一方面之外 一切都运行良好 我使用 简单 结帐模式 其中 Stripe 为我呈现结帐按钮 但我在文档中看不到如何检测用户是否单击关闭按钮 有
  • 如何将多个 SQL 查询合并为一个? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有多个 sql 查询 我想将它们捆
  • 将列转置为行 oracle

    我有一个以这种形式返回的查询值 查询返回超过 50 列 1 99transval 100 200transval 200 300transval 1 99nontransval 100 50 90 80 67 58 对于行值 我希望将这些详
  • 从查询字符串中的令牌授权 AWS API Gateway 请求

    我已经使用 Cognito 授权者设置了 API 网关 该授权者可以使用标头中的 id 令牌正确授权任何请求 当请求基于 XHR 时这很好 因为我可以在准备请求时添加标头 但是我在使用时无法添加这个
  • 显示多个图像动画

    我想显示一个背景图像和多个向下移动的图像 就像 降雪 场景一样 我该怎么做 背景图像不应该移动 只有它上面的小图像应该掉落 我该怎么做 更新 gt 我已在屏幕上显示图像 但它们都是同时出现的 但我想显示在不同时间出现的图像 我该怎么做 嘿
  • 如何将数据库从 SQL Server 2005 迁移到 2008?

    我想完全或部分迁移数据库 现在我要做一个完整的数据库 部分将作为单独的问题发布 我正在考虑的策略 复制数据库向导 将 2005 数据库转换为脚本 在 2008 年运行脚本 简单的SQL查询 我的问题 我想使用方法 2 是否可以这样做 如果是
  • 使用 Rcpp 将循环从 R 转换为 C++

    我想使用 Rcpp 提高一些 R 代码的速度 然而我对C 的了解却很少 因此 我检查了 Rcpp 提供的文档 以及 Dirk Eddelbuttel 网站上提供的其他文档 阅读完所有内容后 我尝试执行一个用 R 编写的简单循环 不幸的是 我
  • 如何用Javascript轻松监听xhr请求?

    我正在开发一个 Firefox 扩展 我想知道页面何时发起 xhr 请求 我看到了一些代码 但它们非常大 有没有简单的示例可以实现此目的 我正在测试这段代码 function TracingListener this receivedDat
  • Angular 2如何分别加载2个App根组件

    是否可以加载 2 个不同的根组件 不是在页面中并排 找一个笨蛋的例子 http plnkr co edit XSJ8ac 唯一的区别是两个根组件都加载在单个页面中