создание динамического условия в машинописи - PullRequest
0 голосов
/ 10 июля 2019

У меня есть динамический массив, который представляет столбцы в таблице, и у меня есть массив строк в таблице. Я получаю массивы в качестве входных данных в моих угловых 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>

(пользователь должен редактировать строки и, если он хочет, он может сохранить изменения) все работает, но обязательное условие

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...