NullInjectorError:没有 NgZone 的提供者! (Angular 6 库)

2024-01-07

Summary

我创建了一个 Angular 6 库,但当我尝试在创建它的项目之外使用它时,出现错误。这看起来有很多代码,但它主要是由 CLI 生成的样板文件。

最小工作测试用例

我使用 Angular 6 CLI 创建了一个非常基本的库。

ng new mylib 
cd mylib
ng generate library example
ng build --prod example

然后我可以添加<lib-example></lib-example> to src/app/app.component.html, run ng serve,并查看示例组件按预期工作。

接下来我编辑projects/example/src/lib/example.component.ts添加一个*ng-if="true" to the <p> tag.

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'lib-example',
  template: `
    <p *ng-if="true"> <!-- this line was changed -->
      example works!
    </p>
  `,
  styles: []
})
export class ExampleComponent implements OnInit {

  constructor() { }

  ngOnInit() {
  }

}

为了得到ngIf指令,我导入BrowserModule, so my projects/example/src/lib/example.module.ts看起来像这样:

import { NgModule } from '@angular/core';
import { ExampleComponent } from './example.component';
import { BrowserModule } from '@angular/platform-browser'; // added

@NgModule({
  imports: [
    BrowserModule // added
  ],
  declarations: [ExampleComponent],
  exports: [ExampleComponent]
})
export class ExampleModule { }

Rebuild:

ng build --prod example

我的组件还没有做任何有用的事情,但只要我在创建它的同一个项目中使用它,它就可以工作。

最小的非工作测试用例

让我们尝试在不同的应用程序中使用该库。我首先生成一个新应用程序,该应用程序与包含该库的应用程序位于同一目录中。

ng new myapp 

然后我添加<lib-example></lib-example> to myapp/src/app/app.component.html并将库导入到myapp/src/app/app.module.ts,所以它看起来像这样。

import { BrowserModule } from "@angular/platform-browser";
import { NgModule } from "@angular/core";

import { AppComponent } from "./app.component";
import { ExampleModule } from "../../../mylib/dist/example"; // added

@NgModule({
  declarations: [AppComponent],
  imports: [
     BrowserModule,
     ExampleModule // added
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule {}

错误信息

当我浏览到该应用程序时,我在控制台中收到以下错误。

Error: StaticInjectorError(AppModule)[ApplicationRef -> NgZone]: 
  StaticInjectorError(Platform: core)[ApplicationRef -> NgZone]: 
    NullInjectorError: No provider for NgZone!
    at NullInjector.push../node_modules/@angular/core/fesm5/core.js.NullInjector.get (core.js:1060)
    at resolveToken (core.js:1298)
    at tryResolveToken (core.js:1242)
    at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (core.js:1139)
    at resolveToken (core.js:1298)
    at tryResolveToken (core.js:1242)
    at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (core.js:1139)
    at resolveNgModuleDep (core.js:8377)
    at _createClass (core.js:8430)
    at _createProviderInstance (core.js:8394)

我究竟做错了什么?


嗯,我不知道为什么。但问题是导入BrowserModule。不要将其导入到您的库模块中,它应该可以工作。

import { NgModule } from '@angular/core';
import { ExampleComponent } from './example.component';
//import { BrowserModule } from '@angular/platform-browser'; // added

@NgModule({
  imports: [
   // BrowserModule // removed
  ],
  declarations: [ExampleComponent],
  exports: [ExampleComponent]
})
export class ExampleModule { }

我已经这样做了很长一段时间,并一一删除了我的库模块中的导入。这是BrowserModule.

我认为这应该回答你的其他问题question https://stackoverflow.com/questions/51614615/angular-6-the-result-of-a-dependency-is-an-expression.

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

NullInjectorError:没有 NgZone 的提供者! (Angular 6 库) 的相关文章

  • Windows 10 中的 npm 安装错误( npm install -g angular-cli )

    node v v4 5 0 npm v 5 0 1 有人在 Windows 10 中安装 angular cli 时遇到过这种问题吗 请尝试以下操作 step 0 运行这个命令 npm uninstall g angular cli npm
  • 415 不支持的媒体类型; Angular2 到 API

    我是 Angular 2 的新手 我面临着一个无法找到解决方案的问题 当我尝试从 Angular 2 发布到 API 时 我得到 415 不支持的媒体类型 角度2代码 onSubmit value any console log value
  • 角度 4 单击按钮功能未触发

    我正在尝试检查文本输入是否为空或不在角度 4 中 我没有为此使用表单 这只是一个输入字段 当我在下面的按钮中执行 addLocaton 函数时 需要进行检查 我的输入字段
  • 在 TypeScript 中编译枚举

    What do enums 在 TypeScript 运行时变成 Fruit ts enum Fruit APPLE ORANGE main ts var bowl Fruit APPLE Fruit ORANGE console log
  • 编辑角度材质的表格单元格填充

    当我使用开发人员工具检查该元素时 它显示零填充 但是当我查看它并将鼠标悬停在它上面时 它非常清楚地在单元格内具有填充 我不知道这是从哪里来的 并且设置td padding 0 important 什么也没做 感知到的填充是由以下原因引起的d
  • tsc-watch 是否消耗 TSC_NONPOLLING_WATCHER?

    我正在从事微服务集成项目 我使用同时运行 8 个打字稿服务tsc watch preserveWatchOutput onSuccess node build index js 即使我根本不编写源代码 这些进程也会消耗 70 的 CPU 我
  • jspm / jQuery / TypeScript - 模块“jquery”没有默认导出

    我正在尝试使用 TypeScript 和 jspm system js 来引导 Web 应用程序进行模块加载 我还没有走多远 安装 jspm 后 并使用它来安装 jQuery jspm install jquery 以及基础知识 main
  • 全局未在 ../node_modules/socket.io-parser/is-buffer.js 中定义

    预先感谢您帮助我 我正在尝试在我的一个角度组件中连接套接字 但在浏览器的控制台中它会抛出一个错误 指出 Global 未在 Object node modules socket io parser is buffer js 中定义 这是我的
  • MUI DatePicker + date-fns 本地化问题

    当我使用MUI时出现这个问题日期选择器 with 本地化提供商 and 适配器日期Fns with 匈牙利 local
  • 使用服务中的可观察量测试错误情况

    假设我有一个订阅服务功能的组件 export class Component ngOnInit this service doStuff subscribe data IData gt doThings data error Error g
  • Angular 4 显示其中的数据

    我不喜欢从 API 返回到我的 Angular 4 应用程序的数据 这是 JSON 的示例 我不关心美元 但这是我正在处理的数据类型 最终目标是在页面上展示 Coin Price BTC 4 281 28 ETH 294 62 etc JS
  • 角度垫排序不适用于带点表示法的 matColumnDef

    我正在尝试按列对表进行排序 当我必须过滤另一个结果中的结果时 就会出现问题 我尝试通过括号表示法和点表示法访问该属性 但没有给出结果 还将最终节点放置在 matColumnDef 中 但失败 因为有 2 列同名 table table
  • 无法绑定,因为它不是选择器组件的已知属性

    我想将变量从一个组件传递到另一个组件 并且我正在使用 input 这是我的父组件 Component selector aze templateUrl aze component html styleUrls aze component s
  • TypeScript 中的循环类型引用

    我是打字稿新手 正在尝试了解如何在两种类型之间设置循环引用 该参考不必是完整的代码参考 只需是接口 而是在单独的文件中定义接口 例如 假设我有两个接口 Parent 和 Child 它们是双向链接的 这样父级有子级的集合 并且每个子级都有对
  • TypeScript 支持互斥类型吗?

    我有一个带有参数的方法 我希望 TypeScript 验证传入的对象 在编译时 我知道运行时是一种不同的动物 仅满足允许的接口之一 Example interface Person ethnicity string interface Pe
  • 如何在ionic 2中创建覆盖页面?

    当我进入新页面时如何创建透明的引导覆盖页面 我如何在 ionic 2 中实现 您可以在外部创建 div
  • 如何更改 Angular Material 选择中的滚动条样式?

    我们需要帮助来更改 Angular Material 的 Select 组件中的滚动条 实现了以下演示 https stackblitz com angular bxbvndrpogl file app 2Fselect reset exa
  • Angular 6 中的 Http 错误处理

    我正在尝试使用 Angular 6 中的以下类来处理 http 错误 我从服务器收到 401 未经授权状态 但我没有看到控制台错误消息 HttpErrorsHandler ts 文件 import ErrorHandler Injectab
  • Angular 5 Http拦截器刷新JWT令牌

    我已经实现了令牌保存 检索的逻辑 并且我也有刷新调用 问题是 当我在 HttpInterceptor 中拦截 403 时 同时进行的其他调用也会刷新令牌 我很乐意保留这些调用 直到我的令牌刷新为止 创建我所说的请求 信号量 Injectab
  • Angular Libraries Monorepo:是否可以为每个库使用不同的版本?

    只是一个简单的问题 我似乎找不到答案 我正在尝试构建一个应该能够使用 angular cli v8 的 monorepo 但仍然能够编译和构建为 v2 v3 v4 等制作的库 主要是组件和服务 版本之间发生了很多变化 所以让我们举个例子 V

随机推荐

  • 如何以编程方式获取 Apple Watch 唯一 id 或 UUID 或序列号?

    我想在 Apple Watch 中以编程方式读取任何唯一信息 例如 UDID 或序列号 有什么办法可以得到吗 我想以编程方式而不是通过 xcode 手动获取 WatchOS3没有任何UIDevice 类似 API 来获得平衡identifi
  • 如何根据分页查找id

    我正在使用jQuery 数据表插件 http www datatables net 在 JSF 上
  • Chrome 扩展“Script-src”错误(自学)[重复]

    这个问题在这里已经有答案了 我在学校学习 C 后正在自学 JavaScript 我认为尝试构建 Chrome 扩展将是一个很好的实践 我正在尝试访问 OpenWeatherMap 的 API 来获取城市 ID 来进行天气搜索 这是导致问题的
  • 方法重载和原始类型如何工作?

    我正在做 Java 课练习 我有这段代码 其中包含一个重载方法 class A Overloaded method public void f int n float x System out println f int n float x
  • 防止 ajax 调用缓存的正确方法是什么?

    我有一个 AJAX 调用 它根据简单的标准参数 例如一年中的月份 从不断变化的数据库返回值 在 IE 中 此函数返回缓存的数据 但它不应该返回 我已经监控了服务器端 并且客户端没有联系它 现在 我的标题问题已经以不同的方式被问过 已经在这里
  • 自动增加内部版本号

    我有两个项目正在解决 一个是版本 3 0 0 另一个是 2 0 0 我使用 MSBuild 脚本在 Team City 上构建我的解决方案 如何将版本字符串的内部版本号部分注入到 AssemblyVersion 属性中 同时保留开发时定义的
  • 如何分发调用Python的C++应用程序?

    我知道有一些方法可以从 C 调用 Python 例如 Python C API 或 Boost Python 我的问题是 如何分发该应用程序 例如 用户是否仍然需要在其计算机上安装 Python 和 Python 包 我的用户案例是 我想使
  • Azure函数应用部署和发布管道错误

    我使用 Visual Studio 推送了我的 net core 功能应用程序 现在正在设置发布管道 我可以很好地发布和执行该应用程序 并且它在 Azure 门户上运行得很好 但是 当我在 azure devOps 中看到版本的构建时 该插
  • 无状态 RESTful API 和第三方身份验证

    我想使用第 3 方身份验证 OpenID 也许是 OAuth 但我猜 OAuth 的用途是授权 以便用户可以轻松登录 但是 对每个请求进行身份验证是否意味着即使我不需要第三方 例如 Google 的任何东西 我也会多次调用它 例如 我使用
  • jquery如何调用外部url?

    我正在尝试使用 jquery 在 Facebook 墙上发表评论 但我的 ajax 调用不允许外部 url 谁能解释一下我们如何在 jquery 中使用外部 url 下面是我的代码 var fbUrl https graph faceboo
  • JavaScript 中双引号和单引号可以互换吗?

    考虑以下两种选择 console log double console log single 前者在字符串周围使用双引号 而后者在字符串周围使用单引号 我看到越来越多的 JavaScript 库在处理字符串时使用单引号 这两种用法可以互换吗
  • 如果行中的任何列满足条件而不是 mutate() 列

    使用 dplyr 我尝试使用 ifelse 和 mutate 有条件地更新列中的值 我想说的是 在一个数据框中 如果一行中的任何变量 列 等于7 那么变量c应该变成100 否则c保持不变 df lt data frame a c 1 2 3
  • Hayoo/Hoogle 不将单态/较少多态签名与多态签名匹配

    例如 我试图了解谷歌和雅虎不匹配是否有根本原因 b gt c gt b gt c gt b b gt c c to a b c gt a b c gt a b b c c 这恰好是类型Control Arrow http hackage h
  • 如何接受逗号分隔列表来为模型构建标签?

    由于我当前应用程序的灵活性有限 我正在关闭 acts as taggable on 相反 我从头开始构建我的标签作为他们自己的模型 但是 我已经错过了表单的 model tag list 方法 该方法会分割以逗号分隔的用户输入并创建单独的标
  • PHP DOMDocument:如何删除 div?

    这是我的代码 doc new DOMDocument doc gt loadHTML stripslashes sContent si le meta existe alors il y a un sondage if doc gt get
  • 在四开书名中使用参数

    我正在尝试创建一本参数化的四开本书籍 其中在 quarto yml 中设置的书名根据参数 名称 而变化 但我无法使其工作 我用r params name在标题中 但它总是将行内代码打印到标题中而不是输出中 下面是我的 quarto yml
  • 如何使用 SSRS 2005 将 INT 转换为 HH:mm:ss

    好的 我需要显示从 SQL 2005 作为 INT 进入 SRSS 2005 的代理的总通话时间 对于我的一生 我无法弄清楚我需要使用什么表达式编辑或格式编辑组合 对于详细部分 我可以使用 DATEADD s SUM Fields Talk
  • 如何在我的网站上打开 wss: 或 ws: 端口?

    我在用Ratchet lib socketo me作为我的聊天应用程序的网络套接字 当我输入 localhost 8080 时 它工作得很好 当我在线发布应用程序时 如何将我的网站设置为 wss 怎么打开端口什么的 这是连接代码 docum
  • 使用 GlassFish 4 的 JNDI 独立应用程序的 EJB 3.1 问题

    我在独立测试应用程序的 JNDI 部分遇到问题 我有gf client jar和jndi properties jar类路径上的文件 在运行客户端之前 我确保在 glassfish 服务器上部署了最新版本 独立应用程序 public cla
  • NullInjectorError:没有 NgZone 的提供者! (Angular 6 库)

    Summary 我创建了一个 Angular 6 库 但当我尝试在创建它的项目之外使用它时 出现错误 这看起来有很多代码 但它主要是由 CLI 生成的样板文件 最小工作测试用例 我使用 Angular 6 CLI 创建了一个非常基本的库 n