这似乎是'@angular/common'模块和ivy编译器的问题?有什么想法吗?删除node_modules和更新angular没有任何成功。
<!-- Define our template -->
<ng-template #myTemplate> World! </ng-template>
Hello
<!-- Render the template in this outlet -->
<ng-container [ngTemplateOutlet]="myTemplate"></ng-container>
如果我尝试*ngTemplateOutlet=。。。然后我在运行时得到这个错误:NG0303:无法绑定到"ngTemplateOutlet",因为它不是"ng容器"的已知属性。node_modules/@angular/core/ivy_ngcc/fesm2015/core.js:10073
Angular Version 11
问题是您需要从CommunModule
导入它。
然而,现在在Angular 15中,您只能导入NgTemplateOutlet
,因为在Angular 15中,您可以导入组件中真正需要的内容,而不是导入CommunModule 中的所有指令
这是DevExtreme模板中app.module.ts(实际上导入了BrowserModule
(和app-routing.module.ts的混淆。在我将app-routing.module.ts
中的BrowserModule
添加到@NgModule({ imports:
之后,它按预期工作。@伊利亚·科马罗夫:谢谢!你的解决方案也是对的!
当测试时没有将某种mock组件或类似组件传递到测试台时,也可能发生这种情况。
如果你的测试中有类似的东西:
@Component({
template: `
<ng-container *ngTemplateOutlet="test"></ng-container>
<ng-template #test>Test</ng-template>
`,
})
class MockComponent {}
您需要将其传递给TestBed
,如下所示:
await TestBed.configureTestingModule({
declarations: [MockComponent],
}).compileComponents();
根据我的测试,不这样做只会导致角加工的核心特征,而ngTemplateOutlet
指令在CommonModule
中。