【发布时间】:2020-12-05 21:13:18
【问题描述】:
我有以下问题:我使用 Angular 创建了一个 Web 应用程序。我正在制作一个包含多个字段的搜索表单。我已经把它作为一个组件准备好了。代码如下:
<ng-template #filter>
<app-articles-filter #articlesFilterDesktop
(onFilterFormSubmit)="submitFilterForm()"
[categories]="categories"></app-articles-filter>
</ng-template>
要将此代码放在页面上,我使用的是ng-container:<ng-container *ngTemplateOutlet = "filter"> </ng-container>。默认情况下,搜索表单位于页面顶部。我还想这样做,当用户调整窗口(移动设备)的大小时,一个按钮会出现在搜索表单的位置。单击此按钮后,将出现带有此搜索表单的模式窗口。模态窗口代码(我用的是Bootstrap):
<div class="modal fade" id="filterArticlesModal" tabindex="-1" role="dialog" aria-labelledby="filterArticlesModalTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<ng-container *ngTemplateOutlet="filter"></ng-container>
</div>
</div>
</div>
</div>
在一个 HTML 文件中使用 ng-template 两次使用相同的组件,我在控制台中收到警告: “找到 2 个具有非唯一 id 的元素 [此处重复 id]:[此处搜索表单中的 html]”。
在搜索表单中填写的字段不会在模式视图中自动填写。 (当我在页面上完成表单时,缩小浏览器窗口并打开模态窗口。模态窗口中有空字段,反之亦然)。据我了解,Angular 只是粘贴代码,仅此而已。是否可以以某种方式将此代码片段(我的搜索表单组件)视为一个引用而不是副本?
【问题讨论】:
标签: html angular bootstrap-4