当前位置: 首页 > 知识库问答 >
问题:

从“角度材质垫选择”列表中删除选定项

邵城
2023-03-14

我需要能够从角材料列表中删除选定的项目。为此,我决定从初始项目数组中减去选定项目数组(不确定这是最好的方法)。

我的问题是,我找不到一种方法来将超文本标记语言中的选定项数组传递给TS并使用它。

Angular材料在其留档中有以下示例:

{{x.selectedOptions.selected.y}}

其中x是mat-seltion-list选择器的ID,y是对所选元素执行的操作。但这似乎只适用于超文本标记语言。

下面是我不工作的代码。

HTML,其中我设置了列表和按钮,该按钮应触发删除功能。

<mat-selection-list #apps>
    <mat-list-option *ngFor="let app of appList" [value]="app">
      {{app}}
    </mat-list-option>
</mat-selection-list>

<button 
class='remove-button' 
(click)="deleteSelected()"
mat-stroked-button color="primary">
    Remove from list
</button>

我试图弄乱所选选项,但显然不起作用,因为selectedOptions被声明为字符串html" target="_blank">数组,并且没有“selected”方法。我知道这是一个愚蠢的尝试,但无论如何,找不到更好的方法:)应该有一种方法将选定的元素作为数组传递给TS。。。

export class SubscriptionListComponent implements OnInit {

  selectedOptions: string[]
  appList: string[] = ['Instagram', 'Facebook', 'Telegram', 'WhatsApp', 'GitHub']

  deleteSelected() {
    this.appList.filter(x => !this.selectedOptions.selected.includes(x))
  }

目标是在单击按钮时修改appList,以便从其中删除所选元素,并且不显示在列表中。

共有1个答案

韩朝斑
2023-03-14

对于那些可能面临同样挑战的人,我发布了适合我的代码,并完全按照我的要求执行(单击从列表中删除所选元素)。

HTML与上面一样。

TS:

import { Component, OnInit, ViewChild } from '@angular/core';
import { MatSelectionList } from '@angular/material/list';


@Component({
  selector: 'app-subscription-list',
  templateUrl: './subscription-list.component.html',
  styleUrls: ['./subscription-list.component.scss']
})
export class SubscriptionListComponent implements OnInit {

  @ViewChild('apps') selectionList: MatSelectionList

  appList: string[] = ['Instagram', 'Facebook', 'Telegram', 'WhatsApp', 'GitHub']

  deleteSelected() {
    var selected: string[] = this.selectionList.selectedOptions.selected.map(s => s.value)
    var diff = this.appList.filter(el => !selected.includes(el))
    this.appList = diff
  }

  constructor() { }

  ngOnInit(): void {
  }

}
 类似资料:
  • 我使用Angular 7.2创建一个选择控件,如下所示: 这正是我们想要的。我有一些代码希望删除选定的项目,大致如下: 虽然这会将其从选定项的数组中删除。如果我从选择控件中选择新值,则所有原始项仍被选中(即勾选)。 如何清除所选项目? 根据@Maarti的响应,我的代码现在可以使用

  • 我使用的是:Angular 4.4.5@Angular/Material:2.0.0-beta.12

  • 我有一个mat select,其中的选项是数组中定义的所有对象。我试图将该值设置为其中一个选项的默认值,但是当页面呈现时,该值处于选中状态。 我的typescript文件包含: 我的HTML文件包含: 我已尝试将和

  • 我正在尝试使用一个有角度的材质(7.0)选择列表,如下所述。 页面上的示例代码片段是 使用TS文件中定义的,如其代码片段所述: 对我来说很有意义,但是当我尝试编译时,我得到了错误: 我已将导入到我的应用程序模块中。 我没有看到与要导入的列表选项相关的其他模块。 我错过了什么?

  • 我正在使用angular 8.0.0,angular material和Fuse主题作为管理面板。问题是,每当我更改mat-select的样式时,它就会被应用,但在一两次刷新后,角度材质会覆盖本地组件更改并应用默认的。 它也会应用到所有组件,我如何才能只更改一个mat-select的样式? 我的html中有问题的部分: scss文件: } 尝试了stackoverflow的所有建议,但似乎无法改变

  • 我正在将一个对象传递给我的Angular组件,并试图在下拉列表呈现时使下拉列表显示已经选择的值。在我当前的代码中,下拉列表只显示第一个选项。我传入了第二个下拉选项的值。 在我的ts代码中,Object.Reason.code是一个值为“ex2”的字符串 下拉列表绑定到 这是我的html 所需的行为,如果Object.Reason.Code为undefind else如果字符串为EX2,下拉列表将显