import {Component, OnInit} from '@angular/core'; import {NzModalSubject} from 'ng-zorro-antd'; import * as _ from 'lodash'; @Component({ template: `

{{card.chartDesc}}

`, styles: [ ` .card-available { cursor: pointer; background-color: #8bd22f; margin-bottom: 5px; } .card-nonavailable { cursor: pointer; background-color: darkslategray; margin-bottom: 5px; } ` ] }) export class CardAlternativesComponent implements OnInit { card; // 当前替换项 cards; // 已选择项 alts; // 所有可供选择项 alternatives = []; // 扩展了属性的所有可供选择项 constructor(private nzModelSubject: NzModalSubject) { } save() { this.alternatives.forEach((card) => { if (card.available && card.selected) { // 这个card是要替换的内容 card.available = false; this.card = _.omit(card, ['available', 'selected']); return; // break the loop } }); this.nzModelSubject.next(this.card); this.nzModelSubject.destroy(); } selectCard(card) { if (!card.available) { return; } this.alternatives.forEach(val => { if (val.available) { val.selected = false; } }); card.selected = true; } ngOnInit(): void { this.alts.forEach(val => { this.alternatives.push(_.extend({available: true, selected: false}, val)); }); this.cards.forEach(card => { this.alternatives.forEach(c => { if (card.id === c.id) { c.selected = true; c.available = false; } if (c.id === this.card.id) { c.available = true; } }); }); } }