2016-06-09 6 views
6

ng-true-valueng-false-value 대체품을 Angular 2에서 검색했지만 결과가 없습니다. 그들은 다른 도구로 그들을 대체 했습니까? 나는 정말로 그들을 필요로한다. 미리 감사드립니다.Angular2의 "ng-true-value"및 "ng-false-value"대체물

+0

나는 뭔가 있다고 생각하지 않는다. 구체적인 유스 케이스가 있습니까? 이렇게하면 대안을 제안하는 것이 더 쉬워집니다. –

+1

그래서이 체크 박스는''로,'selected' 값은 'true' 또는'false' 중 하나입니다. 나는 체크 박스의 레이블 (동적 : 예 : {{xx}})이되고 싶습니다. –

+1

알립니다. 그 일을하는 커스텀'ControlValueAccessor'가 필요하다고 생각합니다. 나는 Angular2가 현재 상자 밖의 것을 제공하지 않는다고 확신한다. 양식은 일반적으로 약간의 광택이 필요합니다. –

답변

0

해결 방법. 예를 들어 모델에 '플래그'가있는 '객체'가 있고 체크 박스 하나에 값을 '1'로 설정하고 다른 체크 박스에서 플래그를 '2'로 설정해야합니다. "0"이므로 :

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">

이 솔루션은 완벽하지 어떻게 든 서투른 수도 있지만 뭔가 당신은 몇 가지 개선 사항이있는 경우, 제발, 그래서 그것이 작동합니다.

내가 원하는 경우 몇 가지 샌드 박스에서 해보겠습니다.

UPDATE : Verson 2 더 나은 접근 방식과 유연성

.TS 파일 : 함수 setFlag에서

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')>

우리는 4 개 매개 변수를 : 오브젝트를, 객체의 속성, true-value 및 false-value 우리가 원하는 바를 가치있게 설정하고 마크 클래스없이 할 수있는 유연성을 제공합니다. 도움이 되었으면 좋겠다