javascript - 如何在第一次尝试使用来自先前离子段值的 ionChange 事件时触发使用 *NgFor 的 ion-select 内部的 DOM
问题描述
我正在尝试根据类别上的选定值缩小子类别的选项。我正在使用一个 (ionChange) 函数,它根据所选的类别过滤数组。当我控制台日志时, sub_category 数组确实缩小了,但 DOM 仍然在第一次尝试时显示所有值。如果我尝试选择另一个类别,则会触发 DOM 并正确显示缩小的 sub_category 数组。在下面的示例中,我还在 ap 标记中显示 sub_category 的长度。从第一次尝试开始,sub_category 的长度就正确地改变了。所以这里的问题显然在 <ion-select *ngFor>
这是我的代码:
<h4>Category <span class="important-text">*</span></h4>
<ion-segment formControlName="ts_general_category (ionChange)="filterByCategory($event.detail.value)">
<ion-segment-button *ngFor="let general_ts of ts_general"
[value]=general_ts.id>
{{ general_ts.name_en}}
</ion-segment-button>
</ion-segment>
<div *ngIf="filtered_ts_sub_general && filtered_ts_sub_general.length > 0">
<p>{{filtered_ts_sub_general.length}}</p>
<h4>Sub-Category</h4>
<ion-select formControlName="ts_sub_general_category"
class="my-selected-option"
(ionChange)="filterBySubCategory($event.detail.value)"
interface="popover">
<ng-container *ngFor="let sub_general of filtered_ts_sub_general; let i = index">
<ion-select-option [value]=sub_general.id>
<p >{{i}}</p>
</ion-select-option>
</ng-container>
</ion-select>
</div>
filterByCategory(category: string) {
this.current_general_id = category;
this.filtered_ts_sub_general = [...this.ts_sub_general.filter(sg => sg.traffic_sign_general_id.includes(category))];
}
这是初始状态
在第一次单击类别项目时,子类别应该显示一个项目,但显示所有项目。p 标签正确显示数字 1
在第二次点击时,sub_category 的 DOM 正确显示了 3 个值,而 p 标签正确显示了数字 3
从第二次点击到 dom 按预期工作后,我怎样才能让它从第一次点击开始工作?
我已经使用了 trackBy 和过滤器管道,它们都没有从第一次单击时触发 dom。
解决方案
推荐阅读
- python - 我想标记 imaplib 看到的 gmail 消息
- python - 根据多个条件乘以熊猫数据框列
- javascript - 单击图像时触发 Javascript 事件处理程序
- javascript - 如何检查两个div是否相互接触?
- android - Android SDK 级别 30 使用 MediaRouter API 将视频投射到 Chromecast
- angular - 单元格样式不适用于在角度 Ag-grid 中枢轴为真的列定义
- wordpress - 允许访问 .htaccess 中的特定端点
- bash - 将 ts 文件转换为 js 时出现文件未找到错误
- mysql - MySQL 查询以在 Wordpress 中获取此数据
- java - 语音识别器无法离线工作(Android)