2016-06-09 25 views
6

Angular 2 içinde ng-true-value ve ng-false-value alternatifleri arıyordum ama sonuç almadım. Onları başka araçlarla mı değiştirdiler? Onlara gerçekten ihtiyacım var. Şimdiden teşekkürler:"ng-true-value" ve "ng-false-value" alternatifleri, Angular2 içinde

+0

Bir şey olduğunu düşünmüyorum. Somut kullanım durumunuz var mı? Bu, geçici çözümler önermenizi kolaylaştırır. –

+1

bu yüzden bu onay kutusunu kullanıyorum: < ', burada' selected' değerinin olacağı açıktır "true" veya "false" onay kutusunun etiketini (örneğin: {{xx}}) olmasını istiyorum. –

+1

Anladım. Sanırım bunu yapan bir özel 'ControlValueAccessor' gerekir. Angular2'nin şu anda kutudan hiçbir şey sağlamadığından eminim. Formlar genel olarak hala biraz cilaya ihtiyaç duyar. –

cevap

0

Geçici çözüm. Örneğin, modelde bir 'bayrak' olan 'nesne' var ve bir onay kutusu bayrağı "1" değerine ayarlamalı ve başka bir onay kutusu işaretin "2" değerine ayarlanmasını sağlamalı, eğer onay kutusunun işaretli olmaması gerekiyorsa değer "0", yani:

public setFlag(object: any, event: any): any { 
 
    if (event.target.classList.contains('some-mark-class') && (object.flag == 0 || object.flag == 1)) { 
 
    object.flag = 2; 
 
    } else if (!event.target.classList.contains('some-mark-class') && (object.flag == 0 || object.flag == 2)) { 
 
    object.flag = 1; 
 
    } else { 
 
    object.flag = 0; 
 
    } 
 
}
<input type="checkbox" name="hide-{{object.flag}}" [checked]="object.flag === 1" (change)="setFlag(object, $event)"> 
 
<input type="checkbox" name="dlte-{{object.flag}}" [checked]="object.flag === 2" (change)="setFlag(object, $event)" class="some-mark-class">

çözüm değildir mükemmel ve bir şekilde hantal olabilir ama bir şey var ve bazı iyileştirmeler varsa, lütfen bu nedenle, çalışır.

Biraz daha zamana sahip olacağım zaman, isterseniz biraz kum havuzunda yapmaya çalışacağım :).

GÜNCELLEME: Verson 2 Daha iyi bir yaklaşım ve esneklik

ts dosyası: Bir fonksiyon setFlag olarak

public setFlag(obj: any, property: any, trueValue: any, falseValue: any): any { 
 
    if (obj[property] === trueValue) { 
 
    obj[property] = falseValue; 
 
    } else { 
 
    obj[property] = trueValue; 
 
    } 
 
}
<input type="checkbox" name="hide-{{object.flag}}" [checked]="object.flag === 1" (change)="setFlag(object, 'flag', 1, 0)> 
 
<input type="checkbox" name="dlte-{{object.flag}}" [checked]="object.flag === 1" (change)="setFlag(object, 'flag', 'true-value', 'false-value')>

biz 4 parametre alması: nesneyi, nesne, gerçek değer ve yanlış değer için özellik istediğimiz değeri belirleme ve marka-sınıfı olmadan yapabilmemiz için esneklik. Umarım