li 不会在路由到 Angular 中的不同 html 页面时消失,为什么?
li does not disappear on routing to different html page in Angular, Why?
我有一个页面,我有一个 table。有一列名为 "Actions"。
一旦用户单击任意行中的操作列,操作菜单就会显示为“编辑”和“删除”。一旦用户点击编辑,我就会重定向到另一个 html 页面。
一切正常。但是菜单在重定向到另一个页面后并没有消失。如果我返回并再次单击操作列,则会出现一个包含编辑和删除的新菜单。
<p-dataTable #dataTable>
<p-column field="" header="{{l('Actions')}}" [sortable]="false" [style]="{'width':'25px'}">
<ng-template let-record="rowData" pTemplate="body">
<div class="btn-group dropdown" normalizePosition>
<button class="dropdown-toggle btn btn-xs btn-primary blue"
data-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false">
<i class="fa fa-cog"></i>
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li>
<a (click)="onEditClick(record, $event)">{{ l('Edit') }}</a>
</li>
<li>
<a (click)="onDeleteClick(record, $event)">{{ l('Delete') }}</a>
</li>
</ul>
</div>
</ng-template>
</p-column>
</p-dataTable>
onEditClick(selectedValue: any): void {
this.router.navigate(['/app/xyz/pqr', selectedClassification.id]);
}
您正在将 angular 与纯 bootstrap JavaScript 混合。每次点击 DropDown 时,bootstrap-JavaScript 都会在 html 标记底部的某处创建菜单。
angular-路由器仅更新 router-outlet
内的标记,因此导航时不会删除附加的菜单标记。
尝试像这样使用 angular 特定的 bootstrap 版本:
https://ng-bootstrap.github.io/#/components/dropdown/examples
他们应该已经实施了您的问题的解决方案,这将避免更多即将出现的问题 ;-)
我有一个页面,我有一个 table。有一列名为 "Actions"。
一旦用户单击任意行中的操作列,操作菜单就会显示为“编辑”和“删除”。一旦用户点击编辑,我就会重定向到另一个 html 页面。
一切正常。但是菜单在重定向到另一个页面后并没有消失。如果我返回并再次单击操作列,则会出现一个包含编辑和删除的新菜单。
<p-dataTable #dataTable>
<p-column field="" header="{{l('Actions')}}" [sortable]="false" [style]="{'width':'25px'}">
<ng-template let-record="rowData" pTemplate="body">
<div class="btn-group dropdown" normalizePosition>
<button class="dropdown-toggle btn btn-xs btn-primary blue"
data-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false">
<i class="fa fa-cog"></i>
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li>
<a (click)="onEditClick(record, $event)">{{ l('Edit') }}</a>
</li>
<li>
<a (click)="onDeleteClick(record, $event)">{{ l('Delete') }}</a>
</li>
</ul>
</div>
</ng-template>
</p-column>
</p-dataTable>
onEditClick(selectedValue: any): void {
this.router.navigate(['/app/xyz/pqr', selectedClassification.id]);
}
您正在将 angular 与纯 bootstrap JavaScript 混合。每次点击 DropDown 时,bootstrap-JavaScript 都会在 html 标记底部的某处创建菜单。
angular-路由器仅更新 router-outlet
内的标记,因此导航时不会删除附加的菜单标记。
尝试像这样使用 angular 特定的 bootstrap 版本:
https://ng-bootstrap.github.io/#/components/dropdown/examples
他们应该已经实施了您的问题的解决方案,这将避免更多即将出现的问题 ;-)