我对Angular@Component
的Karma Jasmine测试抱怨说
错误:“无法绑定到'ngIf',因为它不是'p'的已知属性。”
当应用程序本身出现此类错误时,修复方法是确保将浏览器模块
添加到应用程序模块(app.module.ts
)的导入:[]
。我确实有这个意思(所以这个问题不是关于“不能绑定到'ngXXX'的规范问题的重复,因为它不是'YYY'的已知属性”)。
这是我的测试设置代码:
let component: MyComponent;
let fixture: ComponentFixture<MyComponent>;
beforeEach(async () => {
TestBed.configureTestingModule({
imports: [
BrowserModule
],
providers: [
MyComponent,
{ provide: MyService, useClass: MockMyService }
]
}).compileComponents();
TestBed.inject(MyService);
component = TestBed.inject(MyComponent);
fixture = TestBed.createComponent(MyComponent);
fixture.detectChanges();
});
我的超文本标记语言模板显示*ngIF
,而不是ngIF
或错别字,这是该错误消息的另一个常见原因:
<div class="self">
<p *ngIf="isLoggedIn() else selfLogin">Logged in as
{{getUsername()}}</p>
<ng-template #selfLogin>
<button id="login" (click)="login()">login</button>
</ng-template>
</div>
在每次调用之前,将测试模块配置和对象注入单独的(如针对不同角度测试问题所建议的那样)没有帮助。
由于我没有在声明中包含被测试的组件,所以我得到了相同的错误。
describe('MyComponent', () => {
let component: MyComponent;
let fixture: ComponentFixture<MyComponent>;
beforeEach(
waitForAsync(() => {
TestBed.configureTestingModule({
declarations: [
MyComponent, // <-What i forgot.
OtherComponent,
],
...
我看到您将组件包括在测试平台中
提供者
。组件通常是声明的一部分。比如说:
let fixture: ComponentFixture<MyComponent>;
let component: MyComponent;
beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({
providers: [
{ provide: MyService, useClass: MockMyService }
],
declarations: [
MyComponent
]
}).compileComponents();
}));
beforeEach(() => {
TestBed.inject(MyService);
fixture = TestBed.createComponent(SelfComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
您的
else
声明也存在HTML格式问题:
<div class="self">
<p *ngIf="isLoggedIn() else selfLogin">Logged in as
{{getUsername()}}</p>
<ng-template #selfLogin>
<button id="login" (click)="login()">login</button>
</ng-template>
</div>
应该是。。。
*ngIf=“isLoggedIn();else selfLogin”
我正在尝试测试控件的angular2双向绑定。以下是错误: app.component.html app.component.ts app.component.spec.ts
我曾经在Ingangle2/4中使用过窗体构建器,但现在我在Ingangle6中使用它。我见过这个问题(不能绑定到“form group”,因为它不是“form”的已知属性),但它是针对angular 2的。我对角4做了同样的事情,但我得到了这个错误。请帮忙:我的代码是: app.module.ts:(我已导出FormsModule和ReactiveFormsModule): login.comp
最近开始玩《棱角2》了。到目前为止都很棒。因此,为了学习使用我开始了一个个人演示项目。 有了基本的路由设置后,我现在想从报头导航到一些路由,但由于我的报头是的父路由,所以我收到这个错误。 app.component.html header.component.html 现在我部分地理解了,我猜由于该组件是的包装器,所以不可能通过这种方式访问。那么,对于这样的场景,是否有可能从外部访问导航呢? 如果
完整代码为: app.module为: 怎么了,为什么对我不起作用?
我是Angular 6的新手,正在研究ReactiveForms。获取此错误并无法编译。我已经看到了不同的解决方案,并在导入中添加了ReactiveFormsModule指令,就像解决方案中建议的那样,但它仍然显示了相同的错误。请帮忙。
问题内容: 即使未显示组件,启动我的Angular应用程序时也会出现以下错误。 我必须将注释掉,这样我的应用才能正常工作。 我正在查看Hero插件,但与我的代码没有任何区别。 这是组件文件: 问题答案: 是的,就是这样,在app.module.ts中,我刚刚添加了: