我试图将ng-container与NgTemplateOutlet(https://angular.io/docs/ts/latest/api/common/index/NgTemplateOutlet-directive.html)一起使用
<div *ngFor="let child of children; let i=index">
<ng-container *ngTemplateOutlet="inputTpl; { $implicit: child, index: i }"></ng-container>
</div>
导致错误
[inputTpl中第11列的意外标记{,期望标识符,关键字或字符串; {$ implicit:child,index:i}]
当我使用&#39; context:&#39;就像在文档中一样,这导致了
无法绑定到&#39; ngTemplateOutletContext&#39;因为它不是'容器&#39;
的已知属性
如果我使用在我的ts文件中声明的对象并设置它而不是我的对象,一切都运行正常。此外,这也很好:
<div *ngFor="let child of children; let i=index" class="form-group">
<template [ngTemplateOutlet]="inputTpl" [ngOutletContext]="{ $implicit: child, index: i }" />
</div>
有谁知道,如何在html中使用ng -mpTelateOutlet和ngTemplateOutletContext使用ng-container?
答案 0 :(得分:3)
您是否尝试<ng-container>
这样的[ngTemplateOutletContext]
?
<ng-container
[ngTemplateOutlet]="inputTpl"
[ngTemplateOutletContext]="{ $implicit: child, index: i }"
>
</ng-container>
答案 1 :(得分:3)
角度5的示例。
<ng-container [ngTemplateOutlet]="optionTemplate.template" [ngTemplateOutletContext]="{option:option}">
</ng-container>
<p-auto-complete property='searchText' [options]="options"(onChnge)="select($event)">
<ng-template pOptionTemplate let-option="option">
<div>
//...
</div>
</ng-template>
</p-auto-complete>
答案 2 :(得分:0)
也许您应该将依赖项更新为2.4?
"dependencies": {
"@angular/common": "~2.4.3",
"@angular/compiler": "~2.4.3",
"@angular/core": "~2.4.3",
"@angular/forms": "~2.4.3",
"@angular/http": "~2.4.3",
"@angular/platform-browser": "~2.4.3",
"@angular/platform-browser-dynamic": "~2.4.3",
"@angular/platform-server": "~2.4.3",
"@angular/router": "~3.4.3",
"@angularclass/conventions-loader": "^1.0.2",
"@angularclass/hmr": "~1.2.2",
"@angularclass/hmr-loader": "~3.0.2",
"core-js": "^2.4.1",
"http-server": "^0.9.0",
"ie-shim": "^0.1.0",
"jasmine-core": "^2.5.2",
"reflect-metadata": "^0.1.9",
"rxjs": "~5.0.2",
"zone.js": "~0.7.4"
},
答案 3 :(得分:0)
调用主模板
<ng-template *ngTemplateOutlet="callMain; context: { $implicit: item }"></ng-template> // can use multiple places
主模板
<ng-template #callMain let-item>
//use dynamic item object
</ng-template>
答案 4 :(得分:0)
您可能必须在声明您当前组件的模块中导入CommonModule
。