angular - 角度材料选择可选的多项选择
问题描述
您好我正在尝试将角度材料选择包装在共享组件中。除了一件事,一切都像魅力一样运作,那就是“多重”属性。
我正在尝试绑定到“@Input()”属性“多个”,代码如下
dropdown.component.ts
import { Component, Input } from '@angular/core';
@Component({
selector: 'dropdown',
templateUrl: './dropdown.component.html',
styleUrls: ['./dropdown.component.scss']
})
export class DropdownComponent {
@Input() dropdownLabel: string;
@Input() categorized: boolean = false;
@Input() multiple: boolean = false;
@Input() data: any[] = [];
}
dropdown.component.html
<mat-form-field>
<mat-label>{{ dropdownLabel }}</mat-label>
<mat-select multiple="multiple">
<!-- If is categorized add groups -->
<ng-container *ngIf="categorized">
<mat-optgroup *ngFor="let group of data" [label]="group.name">
<mat-option *ngFor="let item of group.children" [value]="item">{{ item.name }}</mat-option>
</mat-optgroup>
</ng-container>
<!-- if is not categorized add elements without groups -->
<ng-container *ngIf="!categorized">
<mat-option *ngFor="let item of data" [value]="item">{{ item.name }}</mat-option>
</ng-container>
</mat-select>
</mat-form-field>
当我输入 multiple="false" 或 "true" 时,我在 html 文件中尝试过,它可以工作。
但是当我将它绑定到我的 js 文件中具有默认值“false”的变量“multiple”时,它总是会激活多选行为。
知道如何解决这个问题吗?
提前致谢!
解决方案
当您使用以下语法绑定时:
multiple="multiple"
该multiple
属性绑定到字符串"multiple"
。由于任何非空字符串都是真实的,因此该multiple
属性被激活。显然,Angular Material 将字符串解释"false"
为虚假;以便以下语法关闭multiple
选择组件的选项:
multiple="false"
为确保 Angular 正确计算表达式,请使用带括号multiple
的属性绑定语法:
[multiple]="multiple"
请参阅此 stackblitz以获取演示。
推荐阅读
- angular - Angular 构建中何时生成 index.html?
- python - 打开目录并读取不同的文件并将它们保存到不同的变量中,Python
- python - 编写和运行 DAG 任务的最简洁方法是什么?
- javascript - 选择值在jQuery中返回null
- c# - Linux环境下获取dll元数据
- javascript - 向现有 js 对象添加属性的两种方式有什么区别?
- swift - 抓取加载的网页网址?WKWebView macOS
- c++ - 两种类型的构造函数重载
- jsp - 添加到购物车按钮功能
- sql-server - 当方向在变量中(在 SQL 中)时,如何将图像添加到表中?