如果 angular 目前 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 的方式是否发生了变化? (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 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>关于angular - ngTemplateOutletContext 上下文源未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48195470/ (adsbygoogle = window.adsbygoogle || []).push({}); 10-09 18:20