我的组件存在一个小问题。在我的浏览器中一切正常,没有任何错误,但是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),但没有任何效果。
感谢任何帮助,谢谢。
答案 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