angular2 ng容器如何使用动态ngTemplateOutletContext

Ben*_*nny 5 angular

我正在尝试将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>
Run Code Online (Sandbox Code Playgroud)

导致错误

[inputTpl;中的第11列有意外的标记{,预期的标识符,关键字或字符串];{$ implicit:child,index:i}]

当我在文档中使用“ context:”时,这会导致

无法绑定到“ ngTemplateOutletContext”,因为它不是“ ng-container”的已知属性

如果我使用ts文件中声明的对象而不是Object进行设置,则一切正常。此外,这也很好:

      <div *ngFor="let child of children; let i=index" class="form-group">
      <template [ngTemplateOutlet]="inputTpl" [ngOutletContext]="{ $implicit: child, index: i }" />
    </div>
Run Code Online (Sandbox Code Playgroud)

有人知道吗,我如何将ng-container与html中生成的* ngTemplateOutlet和ngTemplateOutletContext一起使用?

yan*_*rab 6

角度 5 的示例。

<ng-container  [ngTemplateOutlet]="optionTemplate.template" [ngTemplateOutletContext]="{option:option}">
</ng-container>


<p-auto-complete property='searchText' [options]="options"(onChange)="select($event)">
        <ng-template pOptionTemplate  let-option="option">
            <div>
              //...
            </div> 
        </ng-template>
 </p-auto-complete>
Run Code Online (Sandbox Code Playgroud)

闪电战


San*_*dro 5

你尝试<ng-container>[ngTemplateOutletContext]这样吗?

<ng-container
    [ngTemplateOutlet]="inputTpl"
    [ngTemplateOutletContext]="{ $implicit: child, index: i }"
>
</ng-container>
Run Code Online (Sandbox Code Playgroud)

  • Angular版本5将指令名称从ngOutletContext更改为ngTemplateOutletContext-FYI (6认同)

Max*_*x K 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"
  },
Run Code Online (Sandbox Code Playgroud)