0
我創建了一個簡單的工具,使用select
來添加和刪除列表中的英雄。爲Angular 2重構JavaScript腳本
當選擇英雄時,它被添加到數組myheroes
並顯示爲列表項目。所選英雄在select
也被禁用。
當英雄從列表中刪除時,它將在select
中啓用,因此可以再次選擇英雄。
這可以按預期工作,但是我覺得必須有更好更優雅的方法來使用Angular 2的功能。一個屬性指令,用於偵聽對myheroes
的更改。
歡迎任何建議/指導。
@Component({
selector: 'my-app',
template: `
<p>My heroes:</p>
<ul>
<li *ngFor="let myhero of myheroes">
{{ myhero }}
<a href="#" (click)="deleteItem(myhero)">x</a>
</li>
</ul>
<select id="hero" #hero (change)=addItem(hero)>
<option>Select a hero</option>
<option *ngFor="let hero of heroes">{{ hero }}</option>
</select>
`
})
export class AppComponent {
heroes = ['Windstorm','Bombasto','Magneta','Tornado'];
myheroes= [];
deleteItem(item: string) {
const index = this.myheroes.indexOf(item);
this.myheroes.splice(index, 1);
//TODO enable item in select options
const output = document.getElementById('hero').options;
for(const i=0;i<output.length;i++) {
if(output[i].value == item){
output[i].disabled = false;
}
}
}
addItem(item: HTMLSelectElement) {
if(item.value != 'Select a hero') {
this.myheroes.push(item.value);
item.options[item.selectedIndex].disabled = true;
}
}
}
其工作很好你期望除了這個使用angular2? –
感覺像啓用/禁用選擇選項的行爲屬於它自己的組件 – user1405195