我试图在其他模块中使用我在AppModule中创建的组件。但是,我得到了以下错误:
"Uncaught (承诺):错误:模板解析错误: “联系人-框”不是已知的元素:
我的项目结构非常简单:

我将我的页面保存在页面目录中,其中每个页面都保存在不同的模块(例如customers-模块)中,并且每个模块都有多个组件(比如customers-list-component,customers-add-component等等)。我想在这些组件中使用我的ContactBoxComponent (例如在客户内部--例如ContactBoxComponent)。
如您所见,我在小部件目录中创建了联系人框组件,因此它基本上在AppModule中。我将ContactBoxComponent导入添加到app.module.ts中,并将其放入AppModule的声明列表中。它不工作,所以我谷歌了我的问题,并增加了ContactBoxComponent的导出列表。帮不上忙。我还尝试将ContactBoxComponent放入CustomersAddComponent中,然后将其放入另一个(来自不同模块)中,但我发现了一个错误,即存在多个声明。
我遗漏了什么?
发布于 2017-06-08 08:14:54
这是我在得到这样一个错误时执行的5个步骤。
当在单元测试期间发生错误时,请确保声明了组件或在TestBed.configureTestingModule中导入了模块。
我还尝试将ContactBoxComponent放入CustomersAddComponent中,然后将其放入另一个(来自不同模块)中,但我发现了一个错误,即存在多个声明。
您不能两次声明组件。您应该在一个新的单独模块中声明和导出组件。接下来,您应该在每个要使用组件的模块中导入这个新模块。
很难说什么时候应该创建新模块,什么时候不应该创建。我通常会为我重用的每个组件创建一个新模块。当我有一些我几乎在任何地方使用的组件时,我将它们放在一个模块中。当我有一个不能重用的组件时,我将不会创建一个单独的模块,直到我需要它的其他地方。
虽然将所有组件都放在一个模块中可能很有诱惑力,但这对性能是不利的。在开发过程中,模块必须在每次更改时重新编译。模块越大(组件越多),花费的时间就越长。对大模块进行小更改比在小模块中进行小更改要花费更多的时间。
发布于 2019-01-14 19:43:50
我也有过类似的问题。结果是,ng generate component (使用CLIVersion7.1.4)将子组件的声明添加到AppModule,而不是添加到模拟它的TestBed模块。
“英雄之旅”示例应用程序包含一个带有选择器app-heroes的app-heroes。该应用程序在服务时运行良好,但ng test产生了以下错误消息:'app-heroes' is not a known element。将HeroesComponent手动添加到configureTestingModule中的声明(在app.component.spec.ts中)可以消除此错误。
describe('AppComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
AppComponent,
HeroesComponent
],
}).compileComponents();
}));
it('should create the app', () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.debugElement.componentInstance;
expect(app).toBeTruthy();
});
}发布于 2017-12-19 12:24:59
我只是遇到了同样的问题。在尝试这里发布的一些解决方案之前,您可能需要检查组件是否真的不工作。对我来说,这个错误是在我的IDE (WebStorm)中显示出来的,但是当我在浏览器中运行它时,代码却运行得非常好。
当我关闭终端(正在运行ng服务)和重新启动我的IDE后,消息就停止显示了。
https://stackoverflow.com/questions/44429996
复制相似问题