As the title says I'm getting an `ExpressionChangedAfterIsHasBeenCheckedError` and after reading [this article](https://blog.angularindepth.com/everything-you-need-to-know-about-the-expressionchangedafterithasbeencheckederror-error-e3fd9ce7dbb4), from what I understand it is a cautionary put in place to prevent inconsistencies. Exactly those words. So at some point I'm probably violating the unidirectional flow (I assume).
What I have:

A dropdown box. 

```
<select id="product" [(ngModel)]="model.searchParameters.productId">
 <option *ngFor="let product of products [value]="product.id">{{product.name}}</option>
</select>

```

An input box which triggers checkIban. 

```
<div *ngIf="checkIban(productnumber, searchForm)">
   //show validation errors
</div>

checkIban(field: any, form: any): Boolean {
    if(field.dirty)
    {
        if(field.viewModel.length === Productnumber.Iban )
        {
           this.model.searchParameters.productId = Product.Ibannumber;
        }
    }
}

```

I'd like to think I understand the concept of the `ExpressionChangedAfterIsHasBeenCheckedError`, unfortunately for me, not well enough to truly apply a proper solution to this problem.

Using `setTimeout` is not an option (I've tried) as it creates an unpredictable state (as was written in the article). 
So can someone give me some pointers as to what I'm doing wrong?