为冗长的解释道歉,因为我不确定如何最好地描述我的问题/问题。 我对Angular2和打字稿都很陌生(现在只编写了几个月)并且已经编码多年了,所以几乎都是新手了....
我的页面中有一个动态的费用类型列表,我在更改组织价值时会填充这些费用。该列表由一个复选框和一个替换复选框标签的文本字段组成。我在检查复选框时启用了文本字段,但我的工作结构非常糟糕。我很快就会在下面展示我的代码。
我正在寻找的流程如下:
我的html代码添加了第二个文本框,试图让它工作,我将稍后格式化
更新 经过更多的调查,我通过添加[(ngModel)] ="" expenseType.checked"更新了答案的问题。到复选框输入并更新说明文本框以使用[禁用] ="!" expenseType.checked"
我还做了更多的阅读,然后看看如何隐藏类别文本框,直到检查并发现使用[隐藏]并不完全正确,所以更改了类别文本框以使用* ngIf =" expenseType.checked"
我还删除了onChecked()方法中事件对象的引用。将其保留在代码中供以后使用
<div>
<label>Default Expense Types:</label>
<div *ngFor="let expenseType of expenseTypes">
<div class="checkBox">
<input for="expenseTypeText"
type="checkbox"
class="checkBox"
[checked]="false"
(change)="onChecked($event)"
[(ngModel)]="expenseType.checked"
>
<input type="text"
class="text_style"
id="expenseTypeText"
[disabled]="!expenseType.checked"
[(ngModel)]="expenseType.description"
>
<input *ngIf="expenseType.checked"
type="text"
class="text_style"
id="expenseTypeCategory"
[(ngModel)]="expenseType.category"
>
</div>
</div>
</div>
&#13;
我班上的onChecked方法
onChecked($event) {
/* *if ($event.target.checked == true) {
$event.target.nextElementSibling.disabled = false;}
else {
$event.target.nextElementSibling.disabled = true;
}* */ removed
}
&#13;
截至目前截取页面上的费用类型列表I. List with two text boxes
这两组代码用于填充带有expenseType描述和类别的文本框。我遇到的问题是我无法以与描述框相同的方式启用类别框。我非常确定这是因为我的实现访问了我的onChecked()方法中的文本框。到目前为止,所有尝试都只能同时启用或禁用所有类别文本框。我无法访问特定类别文本,就像我为描述文本框所做的那样。
我确信在ngFor和可能的ViewChildren甚至表单和表单组/控件中使用索引的修订可能是正确的方法,但我无法弄明白。
最终,(在一个伟大的世界中,我希望隐藏类别文本框,直到我选中复选框,当我这样做时,说明字段已启用,类别字段出现并已启用,可以进行编辑。我将我只能在选择复选框时启用和禁用两个文本框。
我感谢任何反馈,我相信我也会得到一些关于解析事件数组以获得兄弟姐妹的反馈。我请求任何和所有的帮助。
答案 0 :(得分:0)
用于连接输入的正确方式将是以下模式:
<input type="checkbox" [(ngModel)]="isSomethingChecked">
<input type="text" [disabled]="isSomethingChecked">