mat-chip选择事件发射器没有发射?

yoo*_*ung 5 angular-material2 angular

Plunkr:http://plnkr.co/edit/y4e4jS89gOxRKQOyUW2r?p =preview

我在mat-chip上使用selectionChange @Output来查看芯片选择的结果,但似乎eventEmitter没有触发芯片选择?

html的:

<mat-chip-list>
  <mat-chip (selectionChange)="changeSelected($event)">Papadum</mat-chip>
  <mat-chip (selectionChange)="changeSelected($event)">Naan</mat-chip>
  <mat-chip (selectionChange)="changeSelected($event)">Dal</mat-chip>
</mat-chip-list>

<p>Currently Selected: {{selected}}</p>
Run Code Online (Sandbox Code Playgroud)

.TS:

selected: string;

changeSelected(e) {
  console.log(e);
  this.selected = e.value;
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,单击选择时根本不会发出任何事件.这是一个仍在开发中的东西,还是选择意味着与我的想法不同?

Ian*_*ici 8

不确定这个组件的用途是什么,因为它仍在进行中,但它似乎是提供一个禁用和启用可选内容的界面,以及一些其他功能.

您没有看到任何事件被触发,因为您尚未激活已选中.

在你的情况下,这样的事情将解决它.

  <mat-chip-list>
    <mat-chip [selected]="state1" (selectionChange)="changeSelected($event)" (click)="state1=!state1">Papadum</mat-chip>
    <mat-chip [selected]="state2" (selectionChange)="changeSelected($event)" (click)="state2=!state2"> Naan</mat-chip>
    <mat-chip [selected]="state3" (selectionChange)="changeSelected($event)" (click)="state3=!state3"> Dal</mat-chip>
  </mat-chip-list>
Run Code Online (Sandbox Code Playgroud)

此外,如果你想使这更通用,诉诸*ngFor指令

在HTML中

  <mat-chip-list>
    <mat-chip *ngFor="let chip of chips" [selected]="chip.state" (selectionChange)="changeSelected($event)" (click)="chip.state=!chip.state">{{chip.name}}</mat-chip>
  </mat-chip-list>
Run Code Online (Sandbox Code Playgroud)

在ts

  chips = [
    {name: 'Papadum'},
    {name: 'Naan'},
    {name: 'Dal'}
  ];
Run Code Online (Sandbox Code Playgroud)

  • 我知道,我认为选择芯片本质上是与点击事件相关的,但我想事实并非如此。将拭目以待,看看芯片的发展方向。 (2认同)
  • 不错的工作。我喜欢 mat-chip 的呈现方式,但我发现很难将它们实现为动作按钮。就像在垫子工具栏中使用垫子切换按钮一样结束。遗憾... :( (2认同)
  • 嗨,@SteveDrake,只是分享“chip.toggleSelected()”在我的情况下效果更好。 (2认同)

May*_*ala 6

这是一个示例,我可以使用它来使其工作。即使默认选择类别也有效。您也可以使用我在演示中使用的select()方法来代替。selectViaInteraction()

HTML:

<mat-chip-list #chipList [multiple]="true" [selectable]="true">
  <mat-chip *ngFor="let category of categories" #chip="matChip" (click)="category.selected ? chip.deselect() : chip.selectViaInteraction()" [selected]="category.selected" [selectable]="true" class="leadr-category-chip" (selectionChange)="changeSelected($event, category)">
    {{category.name}}
    <mat-icon matChipRemove *ngIf="removable">cancel</mat-icon>
  </mat-chip>
</mat-chip-list>
Run Code Online (Sandbox Code Playgroud)

TS:

changeSelected($event, category): void {
  category.selected = $event.selected;
}
Run Code Online (Sandbox Code Playgroud)

样本:

this.categories = [
  {
    name: 'Category 1',
    selected: false
  },
  {
    name: 'Category 2',
    selected: true
  },
  {
    name: 'Category 3',
    selected: false
  },
  {
    name: 'Category 4',
    selected: true
  },
  {
    name: 'Category 5',
    selected: false
  }
];
Run Code Online (Sandbox Code Playgroud)