如何在 Angular 中使用 *ngIf 在元素中显示模板引用变量?

How to display template reference variables within elements with *ngIf in Angular?

提问人:Entire-Commercial860 提问时间:11/8/2023 更新时间:11/8/2023 访问量:68

问:

我想使用 Swagger UI 呈现一个 JSON 文件。但是,API 文档应显示在包含 *ngIf 的元素中。如果我执行所示的代码,则不会显示 API 文档,但如果我省略 *ngIf,一切正常。

  @ViewChild('customerapidocumentation', { static: true })
  custApiDocElement: ElementRef | undefined;

 ngAfterContentInit(): void {
    const apiDocumentation = this.api;
    const ui = SwaggerUI({
      spec: apiDocumentation,
      domNode: this.custApiDocElement?.nativeElement
    });
  }

 <div *ngIf="docu">
      <div #customerapidocumentation id="customer-api-documentation"></div>
 </div>

我也尝试过使用 {static: false} 和 ngAfterViewInit,但这也没有用。

HTML Angular TypeScript dom swagger-ui

评论

0赞 LogicBlower 11/8/2023
请参阅 stackoverflow.com/questions/44811132/...
0赞 Aakash Garg 11/9/2023
你能为此提供一个 StackBlitz 吗?
0赞 Eliseo 11/9/2023
static:true只有当模板引用变量不在 *ngIf 下时。这个“参数”对 Angular 来说,不要在组件的最初阶段检查是否存在其他东西(这就是您可以在 ngOnInit 中使用的原因)。那就是:只检查是否存在一次
0赞 Entire-Commercial860 11/9/2023
@LogicBlower我尝试了另一篇文章中的建议,但它们也不起作用。例如,如果我使用 [hidden]=“!docu” 而不是 *ngIf=“docu”,它的效果与我完全省略 *ngIf 相同。如果存在 API,它会使用 Swagger UI 显示,但如果 docu 未定义,我会在控制台中收到错误,而 *ngIf 不会发生这种情况。

答: 暂无答案