【问题标题】:Angular Formly: HideExpression does not kick in on page load (Angular 10)Angular Formly:HideExpression 不会在页面加载时启动(Angular 10)
【发布时间】:2020-09-04 15:37:32
【问题描述】:

在 Angular 10 中面临这个问题

我的表单上有许多字段。当用户更改下拉列表中的选定值时,每个字段上都有一个hideExpression,根据用户选择的内容显示/隐藏字段。这目前工作正常。

但是,我试图将下拉菜单默认设置为选择中的第一个选项。这也很好用。

我的问题是所有hideExpression 逻辑在加载屏幕时都没有被触发。因此,选择默认正确,但与该选项一起使用的字段(应该显示)都不可见。 如果我手动更改下拉值,那么一切都会正确显示。有没有办法让hideExpression 逻辑启动,即使选择是通过代码默认的?

页面默认为 Option2。 Yet, there is a hidden field that should show whenever Option2 is selected.因此,如果您将下拉菜单更改为 Option1,然后返回 Option2...您将看到隐藏字段。如果您将下拉菜单默认设置为某个值,则隐藏/显示逻辑似乎不会启动。

注意 代码有点复杂,所以我无法在 Plunkr 中复制它

【问题讨论】:

    标签: angular angular-formly angular10


    【解决方案1】:

    尝试将hideExpresion 放在 .html 中,而不是放在(更改)函数中,例如

    <div *ngIf="form.get('someSelect').value=='phone'>
        <input formControlName="email">
    </div>
    

    或在为您的表单提供价值后包含在对 changeSelects 的 setTimeout 调用中

       this.form=....
       setTimeOut(()=>{
         this.changeSomeSelect();
         this.changeAnotherSelect();
       })
    

    注意:是一个抽象的问题,我不知道这两个想法是否可以帮助你

    【讨论】:

      猜你喜欢
      • 2020-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-09
      • 2018-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多