From 7c2d6e8b22d1adc16a2ee3a194b7fa9c17bed401 Mon Sep 17 00:00:00 2001 From: "francois.grand" <francois.grand@irstea.fr> Date: Mon, 26 Feb 2018 12:33:39 +0100 Subject: [PATCH] correction des messages console 'ExpressionChangedAfterItHasBeenCheck' --- .../base-param-input.component.ts | 4 ++-- src/app/components/base/base.component.ts | 10 ++++++--- .../generic-input/generic-input.component.ts | 22 +++++++++++++++---- .../ngparam-input/ngparam-input.component.ts | 8 +++---- .../param-field-line.component.ts | 6 ++--- .../param-values/ngparam-max.component.ts | 6 ++--- .../param-values/ngparam-min.component.ts | 6 ++--- .../param-values/ngparam-step.component.ts | 6 ++--- .../param-values/param-values.component.ts | 6 ++--- .../param-values/value-list.component.ts | 6 ++--- 10 files changed, 49 insertions(+), 31 deletions(-) diff --git a/src/app/components/base-param-input/base-param-input.component.ts b/src/app/components/base-param-input/base-param-input.component.ts index 7f9812f48..9d836d6d6 100644 --- a/src/app/components/base-param-input/base-param-input.component.ts +++ b/src/app/components/base-param-input/base-param-input.component.ts @@ -44,8 +44,8 @@ export class NgBaseParam extends Observable { templateUrl: "../generic-input/generic-input.component.html", }) export class BaseParamInputComponent extends GenericInputComponent { - constructor(private intlService: InternationalisationService) { - super(); + constructor(private intlService: InternationalisationService, cdRef: ChangeDetectorRef) { + super(cdRef); } /** diff --git a/src/app/components/base/base.component.ts b/src/app/components/base/base.component.ts index 3d7cef25d..d1c3efca7 100644 --- a/src/app/components/base/base.component.ts +++ b/src/app/components/base/base.component.ts @@ -1,6 +1,6 @@ -import { Output, EventEmitter, AfterViewChecked } from "@angular/core"; +import { Output, EventEmitter, AfterViewChecked, OnChanges } from "@angular/core"; -export abstract class BaseComponent implements AfterViewChecked { +export abstract class BaseComponent implements AfterViewChecked, OnChanges { /** * true après le 1er affichage du composant */ @@ -32,8 +32,12 @@ export abstract class BaseComponent implements AfterViewChecked { } } + public ngOnChanges() { + } + /** * appelé une fois, après l'affichage complet du composant */ - protected abstract afterFirstViewChecked(); + protected afterFirstViewChecked() { + } } \ No newline at end of file diff --git a/src/app/components/generic-input/generic-input.component.ts b/src/app/components/generic-input/generic-input.component.ts index e3359da12..578ab729d 100644 --- a/src/app/components/generic-input/generic-input.component.ts +++ b/src/app/components/generic-input/generic-input.component.ts @@ -1,4 +1,4 @@ -import { Input, Output, EventEmitter } from "@angular/core"; +import { Input, Output, EventEmitter, ChangeDetectorRef } from "@angular/core"; import { BaseComponent } from "../base/base.component"; @@ -79,6 +79,10 @@ export abstract class GenericInputComponent extends BaseComponent { */ private _errorMessageModel: string; + constructor(private cdRef: ChangeDetectorRef) { + super(); + } + private get isDisabled(): boolean { return this._inputDisabled; } @@ -90,6 +94,14 @@ export abstract class GenericInputComponent extends BaseComponent { this.onChange.emit({ "action": "valid", "value": this.isValid }); } + /** + * détection des changements dans l'UI par le ChangeDetector du framework + */ + protected detectChanges() { + if (this.cdRef != undefined) + this.cdRef.detectChanges(); + } + /** * calcul de la validité globale du composant (UI+modèle) */ @@ -107,6 +119,7 @@ export abstract class GenericInputComponent extends BaseComponent { private validateUI() { let { isValid, message } = this.validateUIValue(this._uiValue); this._errorMessageUI = message; + this.detectChanges(); this.setUIValid(isValid); return isValid; } @@ -121,6 +134,7 @@ export abstract class GenericInputComponent extends BaseComponent { private validateModel() { let { isValid, message } = this.validateModelValue(this.getModelValue()); this._errorMessageModel = message; + this.detectChanges(); this.setModelValid(isValid); } @@ -162,6 +176,7 @@ export abstract class GenericInputComponent extends BaseComponent { this._model = v; this.afterSetModel(); this.updateAll(); + this.detectChanges(); } /** @@ -192,10 +207,9 @@ export abstract class GenericInputComponent extends BaseComponent { } /** - * appelé après le 1er affichage du composant - * @see BaseComponent + * appelé quand les @Input changent */ - protected afterFirstViewChecked() { + public ngOnChanges() { this.updateAll(); } diff --git a/src/app/components/ngparam-input/ngparam-input.component.ts b/src/app/components/ngparam-input/ngparam-input.component.ts index a5ce7ec9b..23cd83d34 100644 --- a/src/app/components/ngparam-input/ngparam-input.component.ts +++ b/src/app/components/ngparam-input/ngparam-input.component.ts @@ -28,13 +28,13 @@ export class NgParamInputComponent extends GenericInputComponent implements Obse */ private _tmp: number; - constructor(private intlService: InternationalisationService) { - super(); + constructor(private intlService: InternationalisationService, cdRef: ChangeDetectorRef) { + super(cdRef); } /** - * appelé avant le changement de modèle - */ + * appelé avant le changement de modèle + */ protected beforeSetModel() { if (this._paramDef != undefined) this._paramDef.removeObserver(this); diff --git a/src/app/components/param-field-line/param-field-line.component.ts b/src/app/components/param-field-line/param-field-line.component.ts index 604f87eb0..b6c40c242 100644 --- a/src/app/components/param-field-line/param-field-line.component.ts +++ b/src/app/components/param-field-line/param-field-line.component.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild, Input, Output, EventEmitter, AfterViewChecked } from "@angular/core"; +import { Component, ViewChild, Input, Output, EventEmitter, OnChanges } from "@angular/core"; import { InternationalisationService } from "../../services/internationalisation/internationalisation.service"; import { NgParameter, ParamRadioConfig } from "../../formulaire/ngparam"; @@ -25,7 +25,7 @@ import { FormulaireService } from "../../services/formulaire/formulaire.service" }` ] }) -export class ParamFieldLineComponent implements AfterViewChecked { +export class ParamFieldLineComponent implements OnChanges { @Input("param") private _param: NgParameter; @@ -257,7 +257,7 @@ export class ParamFieldLineComponent implements AfterViewChecked { this.emitValidity() } - public ngAfterViewChecked() { + public ngOnChanges() { this._ngParamInputComponent.model = this._param; this._ngParamInputComponent.showError = this.isRadioFixChecked; } diff --git a/src/app/components/param-values/ngparam-max.component.ts b/src/app/components/param-values/ngparam-max.component.ts index f6cbbbeaa..ae6852ef8 100644 --- a/src/app/components/param-values/ngparam-max.component.ts +++ b/src/app/components/param-values/ngparam-max.component.ts @@ -1,4 +1,4 @@ -import { Component, Input } from "@angular/core"; +import { Component, Input, ChangeDetectorRef } from "@angular/core"; import { NumericalString } from "jalhyd"; @@ -11,8 +11,8 @@ import { NgParameter } from "../../formulaire/ngparam"; templateUrl: "../generic-input/generic-input.component.html" }) export class NgParamMaxComponent extends GenericInputComponent { - constructor(private intlService: InternationalisationService) { - super(); + constructor(private intlService: InternationalisationService, cdRef: ChangeDetectorRef) { + super(cdRef); } /** diff --git a/src/app/components/param-values/ngparam-min.component.ts b/src/app/components/param-values/ngparam-min.component.ts index cd00396c1..162307df2 100644 --- a/src/app/components/param-values/ngparam-min.component.ts +++ b/src/app/components/param-values/ngparam-min.component.ts @@ -1,4 +1,4 @@ -import { Component, Input } from "@angular/core"; +import { Component, Input, ChangeDetectorRef } from "@angular/core"; import { NumericalString } from "jalhyd"; @@ -11,8 +11,8 @@ import { NgParameter } from "../../formulaire/ngparam"; templateUrl: "../generic-input/generic-input.component.html" }) export class NgParamMinComponent extends GenericInputComponent { - constructor(private intlService: InternationalisationService) { - super(); + constructor(private intlService: InternationalisationService, cdRef: ChangeDetectorRef) { + super(cdRef); } /** diff --git a/src/app/components/param-values/ngparam-step.component.ts b/src/app/components/param-values/ngparam-step.component.ts index 3825d5280..a1467d295 100644 --- a/src/app/components/param-values/ngparam-step.component.ts +++ b/src/app/components/param-values/ngparam-step.component.ts @@ -1,4 +1,4 @@ -import { Component, Input } from "@angular/core"; +import { Component, Input, ChangeDetectorRef } from "@angular/core"; import { NumericalString } from "jalhyd"; @@ -11,8 +11,8 @@ import { NgParameter } from "../../formulaire/ngparam"; templateUrl: "../generic-input/generic-input.component.html" }) export class NgParamStepComponent extends GenericInputComponent { - constructor(private intlService: InternationalisationService) { - super(); + constructor(private intlService: InternationalisationService, cdRef: ChangeDetectorRef) { + super(cdRef); } /** diff --git a/src/app/components/param-values/param-values.component.ts b/src/app/components/param-values/param-values.component.ts index 8ec032838..ff493337b 100644 --- a/src/app/components/param-values/param-values.component.ts +++ b/src/app/components/param-values/param-values.component.ts @@ -317,10 +317,10 @@ export class ParamValuesComponent extends BaseComponent implements AfterViewChec this._param.valueMode = next; } - /** - * appelé au 1er affichage du composant + /** + * appelé quand les @Input changent */ - protected afterFirstViewChecked() { + ngOnChanges() { if (this.isMinMax) this._doInitMinmax = true; else diff --git a/src/app/components/param-values/value-list.component.ts b/src/app/components/param-values/value-list.component.ts index 2286d317e..86e37fe7c 100644 --- a/src/app/components/param-values/value-list.component.ts +++ b/src/app/components/param-values/value-list.component.ts @@ -1,4 +1,4 @@ -import { Component, Input } from "@angular/core"; +import { Component, Input, ChangeDetectorRef } from "@angular/core"; import { GenericInputComponent } from "../generic-input/generic-input.component"; import { InternationalisationService } from "../../services/internationalisation/internationalisation.service"; @@ -10,8 +10,8 @@ import { Message } from "jalhyd"; templateUrl: "../generic-input/generic-input.component.html" }) export class ValueListComponent extends GenericInputComponent { - constructor(private intlService: InternationalisationService) { - super(); + constructor(private intlService: InternationalisationService, cdRef: ChangeDetectorRef) { + super(cdRef); } /** -- GitLab