angular - 禁用角度动态创建的多选(使用插件)下拉菜单
问题描述
我已经为表格数据的每一行添加了一个多选下拉列表,用户可以使用它来更改选择并保存它。
ts(typescript) 文件中多选下拉菜单的设置。
现在我想根据一些用户条件禁用某些行中的下拉菜单。但是更改设置(禁用属性为 true)会禁用表中的所有下拉菜单。
我正在使用并遵循以下 git 示例。 https://cuppalabs.github.io/angular2-multiselect-dropdown/#/disablemode
我使用的示例 html 代码
<tr *ngFor="let item of items;>
<td> {{item.name}} </td>
<td>
<angular2-multiselect [data]="dataArray" [settings]="dropdownSettings"></angular2-multiselect>
</td>
</tr>
示例设置(在 typescriptfile 中)
this.dropdownSettings = {
singleSelection: true,
primaryKey: 'dataId',
labelKey: 'dataName',
text: "Select a value",
enableSearchFilter: true,
lazyLoading: true,
showCheckbox: true,
clearAll: false,
disabled:false
};
解决方案
您可以做的是在您的模板中为每个项目创建一个唯一的设置对象:
<tr *ngFor="let item of items;>
<td> {{item.name}} </td>
<td>
<angular2-multiselect [data]="dataArray" [settings]="getDropdownSettings(item)"></angular2-multiselect>
</td>
</tr>
然后在您的组件中:
getDropdownSettings(item) {
const isDisabled = true; // change to the logic you want here, like item.id === 1;
return {
...this.dropdownSettings,
disabled: isDisabled,
};
}
此代码为您的 ngFor 中的每个项目创建一个新的(唯一的)设置对象
推荐阅读
- google-bigquery - GA4 Big Query 中等效的 Hit Number 属性
- typescript - 在打字稿中以自引用方式键入对象
- mysql - 根据不同的值查询多个MySQL表,并返回匹配计数和第一条记录与最后一条记录之间的时间差
- pandas - 无法确定字段“T_DATE”的类型。warnings.warn("无法确定字段 '{}' 的类型。".format(bq_field.name))
- android - 单击 FCM 通知时,Flutter Notification 挂起的意图被取消
- ipad - iOS 上的 OneDrive 应用程序 - 从 PowerApps 启动到特定文件
- intellij-idea - 带有 WSL2 网络问题的 IntelliJ IDEA 设置
- c# - ASP.NET Core 6 如何在启动期间访问配置
- node.js - 用 Jest 测试异步生成器
- java - 在 android 上的播放器功能区下方放置横幅广告