Я пытаюсь передать данные из родительского компонента в дочерний компонент. Тот же код работал без сбоев до того, как я обновился до angular 9, я даже ничего не изменил в коде этой части.
вот родительский компонент html template:
<tk-dynamic-form-builder [queryableFields]="['something' , 'somethingElse']" [fieldsData]="fieldsData"></tk-dynamic-form-builder>
<button type="button" (click)="reset()" class="reset-button" aria-label="Search" [disabled]="loading">
<span *ngIf="!loading">Reset</span>
</button>
<button type="button" (click)="search()" class="submit-button" aria-label="Search" [disabled]="loading">
<span *ngIf="!loading">Search</span>
<span *ngIf="loading">Searching... <i class='fas fa-spinner fa-pulse'></i></span>
</button>
вот код, относящийся к дочерним компонентам:
@Component({
selector: 'tk-dynamic-form-builder',
templateUrl: './dynamic-form-builder.component.html',
styleUrls: ['./dynamic-form-builder.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush
})
export class DynamicFormBuilderComponent implements OnInit, OnChanges {
@Input() queryableFields: any[];
dateFormat: string;
public myForm: FormGroup;
public numberOfRows: number;
public richTextFields: any[];
formFields: any[] = []; // is the array of fields objects
formBuilderParameters: any; // parameters given to formbuilder.group
formFieldIds: string[] = []; // is an array that represents only the formFieldIds
numberOfColumns: number;
@Input() fieldsData: any[]; // is the data in the form fields which gets presented on update
@Input() isViewMode = false;
constructor(private dateFormatService: DateFormatService,
private fb: FormBuilder,
private http: HttpClient,
private main: MainService,
private store: Store<DynamicProgramLibState>) {
}
ngOnInit(): void {
console.log("dynamic form builder initiated");
this.store.pipe(select('loginState', 'formats')).subscribe(data => {
this.dateFormat = data.dateFormat;
});
}
ngOnChanges(): void {
console.log("ngOnChanges Triggered");
if (this.queryableFields) {
//etc...
}
}
}
приложение обслуживается и работает без ошибок, но ngOnChanges в дочернем компоненте никогда не запускается ни разу, хотя этот код используется работать до обновления до angular 9. Еще одна вещь, на которую следует обратить внимание, это то, что этот метод передачи данных работает не во всем проекте, а не только в этом примере кода.
любые предложения или рекомендации будут весьма полезны оценили