контекст не определен после передачи его в шаблон - PullRequest
1 голос
/ 30 апреля 2019

Почему rowData не определен внутри шаблона расширения?Все в порядке, прежде чем передавать его на шаблон расширения.

<ng-template>
  <ng-container *ngTemplateOutlet="extensiontemplate; context: rowData"></ng-container>
</ng-template>

<ng-template #extensiontemplate> 
<!-- here rowData is undefined -->
</ng-template>

1 Ответ

1 голос
/ 30 апреля 2019

Вы должны добавить переменную rowData в шаблон, например:

<ng-template #extensiontemplate let-rowdata> 
    <!-- here rowData is undefined -->
</ng-template>

Это будет работать, если вы добавили свойство $implicit в контекст (rowData), например, ваш rowData будет выглядеть так:

rowData = {$implicit: 'row data'};

Если вы не добавили неявное свойство, вам необходимо иметь переменную со значением в качестве ключа в контексте.

Например, если ваш контекст

rowData = {somethingElse: 'row data'};

Вам нужен ваш шаблон, например:

<ng-template #extensiontemplate let-rowData="somethingElse"> 
    <!-- here rowData is undefined -->
</ng-template>

См. Эту документацию: https://angular.io/api/common/NgTemplateOutlet

Редактировать

В вашем случае извлеченный rowData, который вы передаете в другой шаблон, не имеет значения $implicit, вам нужно назначить его явно, сделайте так:

<ng-container *ngTemplateOutlet="extensiontemplate; context: rowData"></ng-container>
<ng-template let-viewDetails="vin" #extensiontemplate>
    <tr *ngIf="viewDetails">
        <td colspan="3">
            Additional row data here for VIN ID: {{viewDetails}}                  
        </td>
    </tr>
</ng-template>

Проверьте это здесь: https://stackblitz.com/edit/angular-bmq2xi?file=src/app/app.component.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...