在浏览器之外使用Angular2

时间:2016-06-13 21:06:48

标签: dependency-injection angular electron

我希望构建一个Angular2应用程序,它可以通过两种不同的方式运行 - 无论是在Electron中还是通过CLI。

基本上,应用程序的底层组件是一组服务。在应用程序的Electron版本中,这些服务将通过一组交互式组件公开,但是,对于CLI版本,可以使用节点访问它们。

目前,我处于研究/ PoC阶段 - 试图确认这是可能的,并且出现了两个问题:

  1. Angular是否支持任何其他平台?似乎引导方法仅适用于浏览器。
  2. 似乎Angular2不支持在服务中注入服务,除非它们都在组件/应用程序级别定义(即服务没有注入器)。我并不热衷于在应用程序级别为我的所有服务添加所有依赖项 - 实际上这不起作用,因为我需要非单例。有没有人为此制定解决方法?
  3. 也许Angular2不适合这个。

1 个答案:

答案 0 :(得分:1)

  1. “其他平台”究竟是什么意思? Angular2是浏览器的Web框架。 Electron使用浏览器,因此可以在那里使用。 Ionic有一个从Angular到它原生代表的翻译层。
  2. Angular的构建方式可以扩展到其他平台上使用。

    1. Angular2确实支持向服务注入服务。它不支持的是在服务级别声明提供者。这仅适用于bootstrap()以及组件或指令。
    2.   

      我并不热衷于在应用程序级别为我的所有服务添加所有依赖项

      您可以在模块中创建包含所需提供程序的数组变量。如果模块需要使用或导出的多个模块的提供者,则模块可以从其他模块导出包含此类变量的变量。提供者可以任意嵌套。然后,您可以导出一个或多个此类顶级变量以添加到bootstrap()或根组件或另一个应定义提供程序范围的组件。

        事实上,这不起作用,因为我需要非单身人士。有人为此开发了一种解决方法吗?

      前者与非单身人士无关。根据您需要的非单身人士的不同,有不同的方式。

      如果向组件添加提供程序,则此组件是维护单个实例的范围的根。此组件及其所有子组件(如果它们没有注册相同的提供程序)将在每次请求时获得此提供程序维护的单个实例。

      如果您将提供者注册为工厂功能,则可以注入工厂以获取每次工厂功能调用的新实例。