如何使用 Angular2 将服务注入动态组件

2024-01-22

我有一个使用 DynamicComponentLoader 动态加载另一个组件的组件。然而,动态组件需要注入服务。但是,我不确定如何解决这个问题。我从 Angular.io 文档中看到 DynamicComponentLoader 接受 ResolvedProvider 数组。

我尝试通过以下方式获得提供商:

var provider = provide(ManagerService, {useExisting: ManagerService});
dcl.loadIntoLocation(this.data.template, this.er, "content",[provider]);

这似乎不起作用。你可以看到一个笨蛋的例子 http://plnkr.co/edit/JYLAFRQZjckfxkWEoLon?p=preview.

在 plunker 示例中,您可以看到 Info 组件已加载(因为它不需要该服务),但 Alternate 组件不会加载。

我有点困惑,因为该服务是在根组件中注入的,所以我认为它会在需要时自动注入到每个子组件上。

我如何注入这项服务?


应该和普通的DI没有什么区别

this.dynamicComponentLoader.loadIntoLocation(MyComponent, this.elementRef, "content")


class MyComponent{
  constructor(someService:SomeService){}//injected here when instantiated
}

如果动态加载的组件在构造函数中注入服务,那么它的工作方式就像普通的 DI 一样。

确保该服务已在某些提供程序数组中注册。无论是在组件级别还是在链的更高级别(父级或引导程序)

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

如何使用 Angular2 将服务注入动态组件 的相关文章

随机推荐

  • 如何在生产模式下启动延迟作业工人

    我正在关注Railscast 延迟作业 http railscasts com episodes 171 delayed job 一切在我的机器上运行得很好 如何在生产模式下启动delayed job工人 我在用延迟工作宝石 2 1 4 h
  • 有没有办法检查游戏对象是否已被破坏?

    我正在创建一个游戏 我想在玩家死亡时显示一个面板 我尝试过不同的方法 但似乎没有一个能达到我想要的效果 using System Collections Generic using UnityEngine using UnityEngine
  • 强制 InetAddress.getHostAddress() 返回 IPv4 地址

    我正在使用一个使用的库java net InetAddress getLocalHost getHostAddress 获取我的本地IP地址 然而 这总是在我的计算机上返回 IPv6 地址 Gentoo Linux JDK 1 6 0 37
  • IOS 中选择器作为参数

    我想为每个创建的按钮提出不同的方法 我尝试在 viewDidLoad 中调用 FirstImage 方法 但它不起作用 我在 ViewDidLoad 中的选择器有问题 无法识别 FirstImage 这是一个没有参数的 void 方法 视图
  • googletrans 停止工作,出现错误“NoneType”对象没有属性“group”

    我正在尝试googletrans而且效果很好 从今天早上开始 我开始出现以下错误 我浏览了 stackoverflow 和其他网站的多篇帖子 发现我的 IP 可能被禁止使用该服务一段时间 我尝试使用具有不同 IP 的多个服务提供商互联网 但
  • Google Play 发布前报告 - 资源名称

    我应该如何提供 EditText 的 id 来填充 Google Play 上的预发布报告 应用程序的 Beta Alpha 版本 的凭据 我试过 id editTextLogin editTextLogin R id editTextLo
  • 在 Webcontrol 上使用“Using”块有什么问题?

    我有以下使用 using 阻止TableHeaderCell LiteralControl HyperLink and GridViewRow try finally 该代码按缩进方式工作 使用 使用 块处理控件是否存在任何问题 陷阱 如下
  • Django 文件上传

    这是视图中的代码 def index request if request method POST a request POST logging debug a title logging debug a file form UploadF
  • 如何在 Magento 中获取完整的产品图片 url

    如何获取完整的产品图片 urlmagento 我需要将数据从magento迁移到django所以我需要得到产品完整图像网址迁移站点 这是我的代码
  • Android L——在视图上播放波纹效果

    我试图在某个时间在视图上 而不是在被触摸的视图上 发挥连锁反应 来自 Android L 具体来说 当用户成功更改某些文本时 我希望某个视图播放绿色波纹效果以显示成功 有什么办法可以做到这一点吗 我尝试将 RippleDrawable 放入
  • Visual Studio 诊断工具 - 如何更改选定的进程?

    我在用着Diagnostic Tools在 Visual Studio 2015 中调试 SharePoint Web 部件 我依附于一些w3wp exe处理并且窗口显示以下消息 Multiple processes are being d
  • 在 Visual Studio 中创建一个新的 TypeScript 项目

    如何开始在 Visual Studio 中编写 TypeScript 项目 当我创建一个新项目时没有这个选项 我安装了 Visual Studio 2012 以及 TypeScript 插件 我刚刚找到了解决方案 手动安装 VS Exten
  • D3D11CreateDevice() 返回垃圾值并失败

    我刚刚开始用这本书学习直接3D使用 DirectX11 进行 3D 游戏编程 我按照第一个教程进行操作 并收到一个消息框 显示 D3D11CreateDevice Failed 我检查了这个函数的返回值 得到了垃圾值 2005270483
  • 如何在vb.net中查看设计器代码

    我想看看设计师代码 我想看看如何使用或扩展表单生成 myForm 我的意思是在 C 中我可以看到 Designer cs 文件中的代码 但在 vb net 中我看不到 在 VB Net 中 为了查看设计器文件 您必须单击解决方案资源管理器上
  • 报告本地时间而不是 UTC 服务器时间

    我创建了一个页面 其中向用户显示服务器报告的天气数据 时间保存为 UTC 如何从 Blazor 服务器应用程序显示本地用户或浏览器的时间 我遇到了类似的问题并创建了一个名为的库布拉佐尔时间 https github com dustout
  • List 和 IEnumerable 的区别

    在实现这个通用的同时归并排序 http en wikipedia org wiki Merge sort 作为一种代码卡塔 http en wikipedia org wiki Kata 28programming 29 我偶然发现了 IE
  • Shopify:错误:[API] 此操作需要商家批准 write_themes 范围

    我是 Shopify 新手 我正在尝试在本地设置 Shopify 主题套件 我已经创建了一个私人应用程序并设置了我的商店 但是在尝试使用主题套件访问商店时出现此错误 Errors API This action requires merch
  • Silverlight:强制画布失效或重新绘制自身?

    我有一个 Silverlight 应用程序 上面有一个 Canvas 在该画布上 我动态地 绘制 了一堆东西 但向画布添加了控件 我在画布区域之外有一个按钮可以清除内容 对象已被删除 成功 然而 Canvas 区域不会立即刷新 目前 画布本
  • Memcached 最佳实践 - 小对象和大量键还是大对象和少量键?

    I use memcached http www danga com memcached 存储复杂计算的整数结果 我有数百个可以缓存的整数对象 我应该将它们缓存在更复杂的对象中的单个键下 还是应该为对象使用数百个不同的键 我正在缓存的对象不
  • 如何使用 Angular2 将服务注入动态组件

    我有一个使用 DynamicComponentLoader 动态加载另一个组件的组件 然而 动态组件需要注入服务 但是 我不确定如何解决这个问题 我从 Angular io 文档中看到 DynamicComponentLoader 接受 R