Как и jonrsharpe
сказал, что вы можете вернуть observable
. Везде, где вы отписываетесь от него, не должно быть проблем, потому что каждая подписка будет отдельной.
Но я вижу, что код в subscribe
также может быть повторяющимся, поэтому, возможно, вы сможете воспользоваться объектно-ориентированным программированием .
Создайте базовый класс:
export class BaseFormClass() {
setDefault(formarray: FormArray, index: number, sourceCtrl:string, targetCtrl:string ) {
formarray.at(index)
.get(sourceCtrl)
.valueChanges
.pipe(takeUntil(this._destroy))
.subscribe(value => {
if (value !== null && value !== "" && value !== undefined) {
formarray.at(index)
.get(targetCtrl)
.setValue(this.default);
} else {
formarray.at(index)
.get(targetCtrl)
.setValue(null);
}
});
}
}
И какой компонент, которому требуется эта функция, может расширяться BaseFormClass
.
export class Component1 extends BaseFormClass implements OnInit {
ngOnInit() {
this.setDefault(......);
}
}