无法绑定到"ngTemplateOutlet",因为它不是'ng-container'的已知属性



这似乎是'@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中。

最新更新