Angular5 / Karma'选择器'不是已知元素

时间:2018-04-09 07:58:23

标签: angular typescript karma-runner karma-jasmine

我的组件存在一个小问题。在我的浏览器中一切正常,没有任何错误,但是Karma调试器会抛出一些错误,而且我希望一切都清楚,我想解决它。

错误:

Failed: Template parse errors:
'dj-menu' is not a known element:
1. If 'dj-menu' is an Angular component, then verify that it is part of this module.
2. If 'dj-menu' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.

<dj-menu>选项卡用于app.component.html

menu.component.ts

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

@Component({
    selector: 'dj-menu',
    template: `<nav>
                        <button mat-button routerLink="/login" routerLinkActive="active">Login</button>
                        <button mat-button routerLink="/register" routerLinkActive="active">Register</button>
                        <button mat-button routerLink="/profile" routerLinkActive="active">Profile</button>
                        <button mat-button routerLink="/radio">Radio</button>
                   </nav>
`,
    styleUrls: ['./menu.component.scss']
})
export class MenuComponent implements OnInit {
    {...} // only an empty constructor and ngOnInit()
}

我在 app.module.ts MenuComponent declarations中声明了@NgModule

正如我所说,它在浏览器中工作正常,但在Karma调试器中却没有。到目前为止,我尝试了几个关于类似错误的答案(例如If '<selector>' is an Angular component, then verify that it is part of this module),但没有任何效果。

感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

在测试父组件时,您需要存根子组件,例如,我有两个组件,一个是app,另一个是dj-menu,那么我应该在{{1}中模拟dj-menu使用类似下面的代码进行测试

app

我的app组件看起来像这样(使用@Component({ selector: 'dj-menu', template: '<h1> Some test </h1>' }) class DjMenuComponentStub{ }

dj-menu

在测试app组件时,angular不知道@Component({ selector: 'app', template: '<dj-menu></dj-menu>' }) class AppComponent{ } 你必须通过声明告诉angular使用stub组件

dj-menu