2017-03-02 178 views
0
啓動按鈕

我的問題將肯定似乎對一些人來說很簡單,但我很難找到一個簡單的解決方案來實現這一目標:Angular2複選框,在ngFor

  • 在ngFor循環,我展示了一些物品ID和日期。在每個項目上,我想添加一個刪除按鈕。

  • 這個按鈕在默認情況下是禁用的,只有當我勾選一個複選框(作爲刪除確認)時纔會被激活。

這裏是我的代碼:

<tr *ngFor="let item of itemsArray "> 
    <td>{{item .date | date:'short'}}</td> 
    <td>{{item .id}}</td> 
    <td>Delete? 
     Yes, Sure: <input type="checkbox"> 
     <br> 
     <button [disabled]="" (click)="delete(item .id")></button> 
    </td> 
<tr> 

在app.component.ts,只有一個變量要經過:

const itemsArray = [ 
    {id: 1, date: 1488170777813}, 
    {id: 2, date: 1488170777813}, 
    {id: 5, date: 1488170777813}, 
    {id: 3, date: 1488170777813}, 
    {id: 4, date: 1488170777813} 
]; 

刪除功能僅僅是一個http.delete()遠程API。

我的問題是:如何噸複選框與禁用我的按鈕狀態,因爲我在一個循環內?

+0

發表你的整個代碼中使用,以'itemsArray'變量等 –

+0

我只是增加了一些信息。謝謝:) – BlackHoleGalaxy

回答

1

可以在itemsArray添加一個字段作爲

const itemsArray = [ 
    {id: 1, date: 1488170777813, disabled: true}, 
    {id: 2, date: 1488170777813, disabled: true}, 
    {id: 5, date: 1488170777813, disabled: true}, 
    {id: 3, date: 1488170777813, disabled: true}, 
    {id: 4, date: 1488170777813, disabled: true} 
]; 

,然後在模板ü可以作爲

<tr *ngFor="let item of itemsArray"> 
    <td>{{item.date | date:'short'}}</td> 
    <td>{{item.id}}</td> 
    <td>Delete? 
     Yes, Sure: <input type="checkbox" [(ngModel)]="item.disabled" checked="!item.disabled"> 
     <br> 
     <button [disabled]="item.disabled" (click)="delete(item.id")></button> 
    </td> 
</tr> 
+0

這是一個不錯的主意,但它導致從http請求中獲得它後導致更改我的數據模型。 – BlackHoleGalaxy

+0

是的,但我沒有找到任何其他方式來做到這一點。因爲我們需要跟蹤哪個複選框被點擊。 – pritesh

+0

由於我們在ngfor的內部,你認爲我們可以使用索引來隨時提供參考嗎?我不知道我們如何添加索引來創建例如#checkbox {$ index}等屬性,然後檢查[disabled]中的值? – BlackHoleGalaxy