gpt4 book ai didi

angular - NullInjectorError : No provider for NgZone!(Angular 6 库)

转载 作者:太空狗 更新时间:2023-10-29 18:28:58 40 4
gpt4 key购买 nike

总结

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

最小工作测试用例

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

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

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

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

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 ,所以我的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 { }

重建:

ng build --prod example

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

最小的非工作测试用例

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

ng new myapp 

然后我添加 <lib-example></lib-example>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)

我做错了什么?

最佳答案

您是否尝试过在您的 tsconfig.json 文件中添加以下内容:

"paths": {
"@angular/*": [
"./node_modules/@angular/*"
]
},

请注意路径是./node_modules,有些建议是../node_modules,后者对我不起作用。

希望这会对某人有所帮助。我花了很长时间才找到解决方案。感谢:https://github.com/angular/angular-cli/issues/11883

关于angular - NullInjectorError : No provider for NgZone!(Angular 6 库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51601974/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com