zebzhao / Angular-QueryBuilder

A modernized Angular 4+ query builder based on jquery QueryBuilder
MIT License
291 stars 218 forks source link

Missing values in sub-resultset after setting query programmatically #258

Closed SYS64738 closed 1 year ago

SYS64738 commented 1 year ago

When I set a previously saved query (ngModel or formControl is the same) and the query has sub-resultset, all values in sub-result set will be lost.

Values at the first level works fine. Field and operator works fine even in sub-resultset.

This is an example:

Query saved:

{
  "condition": "and",
  "rules": [
    {
      "field": "drg",
      "operator": "=",
      "value": "abc"
    },
    {
      "condition": "and",
      "rules": [
        {
          "field": "mdc",
          "operator": "=",
          "value": "xyz"
        }
      ]
    }
  ]
}

Query after setting manually in QueryBuilder:

{
  "condition": "and",
  "rules": [
    {
      "field": "drg",
      "operator": "=",
      "value": "abc"
    },
    {
      "condition": "and",
      "rules": [
        {
          "field": "mdc",
          "operator": "="
        }
      ]
    }
  ]
}
SYS64738 commented 1 year ago

I answer myself alone, since I found the cause.

there's a little bug in query-builder html: when template declare a nested query template doesn't propagate the persistValueOnFieldChange attribute, se the changeField() method - fired automatically after set programmatically the query - will always delete values.

So I add this attribute too, when declaring nested template:

... [persistValueOnFieldChange]="persistValueOnFieldChange" ...