ngTemplateOutletContext上下文源未定义

时间:2018-01-10 20:22:38

标签: angular angular-template

如果不是角度< 4.3.6。

目前在显示或编辑模板中未定义gradingKey对象。

在getTemplate(gradingKey)方法中没有未定义。

gradingKey在

中初始化为类字段

组件

@Input() set gradingKeyModel(gradingKeyModel: GradingKeyModel) {
    this.gradingKey = gradingKeyModel.gradingKey;
}

HTML

<ng-template [ngTemplateOutlet]="getTemplate(gradingKey)" 
             [ngTemplateOutletContext ]="{ $implicit: gradingKey }">
</ng-template>

<ng-template #displayTemplate let-gradingKey>
    <div>
        {gradingKey}}        
    </div>
</ng-template>

<ng-template #editTemplate let-gradingKey>
    <div>
        {{gradingKey}}       
    </div>
</ng-template>

为什么模板内的gradingKey突然未定义?

使用ngTemplateOutletContext时,如何更改ngOutletContext的访问方式?

1 个答案:

答案 0 :(得分:0)

我看到2个问题可能会解决该问题。 ngTemplateOutlet需要包装在ng-container中。您传递了ngTemplateOutletContext $ implicit变量(很好),但是尝试将其更改为如下所示的显式变量:

<ng-container [ngTemplateOutlet]="getTemplate(gradingKey)" 
             [ngTemplateOutletContext ]="{ gradingKey: gradingKey }">
</ng-container>

<ng-template #displayTemplate let-gradingKey="gradingKey">
    <div>
        {gradingKey}}        
    </div>
</ng-template>