我在ng-true-value
中搜索了ng-false-value
和Angular 2
替代品,但我没有得到结果。他们用其他工具取代了吗?我真的需要它们。提前致谢
答案 0 :(得分:0)
解决方法。例如,我们有'对象'在带有标记的模型中#39;并且一个复选框应该将标志设置为值" 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">
&#13;
解决方案可能并不完美,而且有些笨拙,但它有效并且有效,所以如果你有一些改进,请做。
当我有更多时间时,如果你想要的话,我会尝试在某个沙箱中进行操作:)。
<强>更新强> Verson 2 更好的方法和灵活性
.ts文件:
public setFlag(obj: any, property: any, trueValue: any, falseValue: any): any {
if (obj[property] === trueValue) {
obj[property] = falseValue;
} else {
obj[property] = trueValue;
}
}
&#13;
<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')>
&#13;
在函数setFlag中,我们采用4个参数:对象,对象的属性,true-value和false-value,这使我们可以灵活地设置我们想要的值,并且不使用mark-class。希望它有所帮助
答案 1 :(得分:0)
我认为实验者的答案太长,所以我给出一个简短的答案:
<input type="checkbox" [(ngModel)]="isActive" [checked]="isActive" name="active" (change)="isActive ? data.is_active = 1 : data.is_active = 0">
我只是在使用短接。
答案 2 :(得分:0)
使用以下来自 npm 的指令。 它可以替代 angular 2 中的 ng-true-value 和 ng-false-value https://www.npmjs.com/package/@nikiphoros/ngx-toggle