在我的组件中,我使用ViewChildren获取其标记模板列表:
@ViewChildren(TemplateRef) private _templates: QueryList<TemplateRef<unknown>>;
在Angular8中,我无法通过ID筛选它们,所以我需要寻找一个内部属性 - 这在某种程度上有点欺骗性:
let template = this._templates.find(t => (<any>t)._def.references[id]) : null;
现在,使用 Angular 9,这个方法已经失效了。我查看了对象并找到了一种新的“hack”:
this._templates.find(t => (<any>t)._declarationTContainer?.localNames?.includes(id)) : null;
但是是否有新的或更干净的解决方案呢?
仍然希望能够找到一种不需要自定义指令的解决方案,例如MatTab可能也会做类似的事情:
<mat-tab>
<ng-template mat-tab-label>
...
</ng-template>
<ng-template matTabContent>
...
</ng-template>
</mat-tab>
: null
看起来很奇怪,应该会给你一个语法错误。这真的能工作吗? - ShamPooSham: null
是因为一个分配问题。 - tris