refactor: trigger cd on image valueChanges
This commit is contained in:
@@ -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>
|
||||||
@@ -1,28 +1,44 @@
|
|||||||
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);
|
||||||
get file() {
|
private imageSubscription?: Subscription;
|
||||||
return this.form().controls.image.value;
|
|
||||||
|
ngOnInit() {
|
||||||
|
this.imageSubscription = this.form().controls.image.valueChanges.subscribe({
|
||||||
|
next: () => this.cd.detectChanges(),
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
updateFileImage(file: File) {
|
updateFileImage(file: File) {
|
||||||
const form = this.form();
|
const form = this.form();
|
||||||
form.controls.image.patchValue(file);
|
form.controls.image.patchValue(file);
|
||||||
form.controls.image.markAsDirty();
|
form.controls.image.markAsDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ngOnDestroy() {
|
||||||
|
this.imageSubscription?.unsubscribe();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user