У меня есть динамический массив, который представляет столбцы в таблице, и у меня есть массив строк в таблице. Я получаю массивы в качестве входных данных в моих угловых 4 компонентах, и я ничего не знаю в столбцах до того, как получу их (должен работать с несколькими типами переменных).
В каждом столбце есть переменная, которая говорит, является ли она обязательной или нет, и в соответствии с этим я строю строку условия, которую я хочу запустить, прежде чем вставить новую строку в массив строк или изменить существующую.
Я создаю условие в ngInit, и после создания оно выглядит примерно так:
"(r.id == null) || (r.name == '')"
и т. Д. (Тоже может быть &&)
Я пытаюсь связать условие с отключенным атрибутом кнопки, но не могу преобразовать его в реальное.
Как я могу преобразовать его в условие, чтобы я мог выполнить его и вернуть соответственно true / false?
Я уже пытался сделать [disabled]="[conditionVar]"
, а также пытался использовать.
${condition}
,
но те не работали
мой код выглядит примерно так:
myComponent.ts:
export class Column {
title: string;
fieldName:string;
mandatory: boolean;
}
@Component({
selector: 'myComponent',
templateUrl: './myComponent.component.html',
styleUrls: ['./myComponent.component.css']
})
export class MyComponentimplements OnInit {
@Input() columns:Column[];
@Input() rows;
conditionString = "";
constructor() { }
ngOnInit() {
for (let c of columns.filter(d=>d.mandatory)) {
this.conditionString += "(r." + c['fieldName'] + " == null) || "; // 'r' is the name of the variable that i want to run the condition on
}
this.conditionString = this.conditionString.substr(0, this.conditionString.length - 4); // to remove the last ||
}
}
myComponent.html:
<table>
...
<tbody>
<tr *ngFor="let r of rows">
<td *ngFor="let c of columns">
<input [(ngModel)]="r.[c.fieldName]">
</td>
<td *ngFor="let c of columns">
<button [disabled]="here I want to bind my condition">save this row</button>
</td>
</tr>
</tbody>
</table>
(пользователь должен редактировать строки и, если он хочет, он может сохранить изменения)
все работает, но обязательное условие