在打字稿中制作动态条件

时间:2019-07-10 12:45:05

标签: javascript angular typescript

我有一个动态数组,代表一个表中的列,并且我有一个表中的行的数组。我在我的有角4个组件中将数组作为输入,但在获取它们之前我对列一无所知(应该对多种类型的变量起作用)。

每列都有一个变量,说明是否强制执行此操作,并据此,在将新行插入行数组或更改现有行之前,构建了一个要运行的条件字符串。

我正在ngInit中创建条件,创建后看起来像这样:
"(r.id == null) || (r.name == '')",依此类推(也可能是&&)

我试图将条件绑定到按钮的Disabled属性,但是我似乎无法将其转换为实数。

如何将其转换为条件以便执行并相应地返回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>

(用户应编辑行,如果需要,他可以保存更改) 除了条件的约束之外,所有事情都有效

0 个答案:

没有答案