refactor: trigger cd on image valueChanges

This commit is contained in:
2026-02-17 18:42:57 -03:00
parent 3c87de3d51
commit 0d49ee6dd8
2 changed files with 26 additions and 10 deletions

View File

@@ -4,5 +4,5 @@
<mat-label>{{'common.name'|translate|upperfirst}}</mat-label> <mat-label>{{'common.name'|translate|upperfirst}}</mat-label>
<input matInput formControlName="name"/> <input matInput formControlName="name"/>
</mat-form-field> </mat-form-field>
<app-image-uploader (file)="updateFileImage($event)" [fileIn]="file"></app-image-uploader> <app-image-uploader (file)="updateFileImage($event)" [fileIn]="form.controls.image.value"></app-image-uploader>
</form> </form>

View File

@@ -1,23 +1,35 @@
import { Component, input } from '@angular/core'; import { ChangeDetectorRef, Component, inject, input, OnDestroy, OnInit } from '@angular/core';
import { MatFormFieldModule } from '@angular/material/form-field'; import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input'; import { MatInputModule } from '@angular/material/input';
import { ImageUploader } from '../../../../components/image-uploader/image-uploader'; import { ImageUploader } from '../../../../components/image-uploader/image-uploader';
import { ReactiveFormsModule } from '@angular/forms'; import { ReactiveFormsModule } from '@angular/forms';
import { ChainFormGroup } from '../chain-formgroup'; import { ChainFormGroup } from '../chain-formgroup';
import { TranslatePipe } from '@ngx-translate/core'; import { TranslatePipe } from '@ngx-translate/core';
import { UpperfirstPipe } from "../../../../pipes/upperfirst-pipe"; import { UpperfirstPipe } from '../../../../pipes/upperfirst-pipe';
import { Subscription } from 'rxjs';
@Component({ @Component({
selector: 'app-chain-form', selector: 'app-chain-form',
imports: [MatFormFieldModule, MatInputModule, ImageUploader, ReactiveFormsModule, TranslatePipe, UpperfirstPipe], imports: [
ImageUploader,
MatFormFieldModule,
MatInputModule,
ReactiveFormsModule,
TranslatePipe,
UpperfirstPipe,
],
templateUrl: './chain-form.html', templateUrl: './chain-form.html',
styles: ``, styles: ``,
}) })
export class ChainForm { export class ChainForm implements OnInit, OnDestroy {
form = input(new ChainFormGroup()) form = input(new ChainFormGroup());
private readonly cd = inject(ChangeDetectorRef);
private imageSubscription?: Subscription;
get file() { ngOnInit() {
return this.form().controls.image.value; this.imageSubscription = this.form().controls.image.valueChanges.subscribe({
next: () => this.cd.detectChanges(),
});
} }
updateFileImage(file: File) { updateFileImage(file: File) {
@@ -25,4 +37,8 @@ export class ChainForm {
form.controls.image.patchValue(file); form.controls.image.patchValue(file);
form.controls.image.markAsDirty(); form.controls.image.markAsDirty();
} }
ngOnDestroy() {
this.imageSubscription?.unsubscribe();
}
} }