Установить значение из списка результатов запроса на реализацию writeValue
У меня есть пользовательский компонент Angular 7, который в ngOnInit
у метода есть запрос к бэкенду как это
ngOnInit() {
this.elementsRequest$ = this.service.getElements();
this.elementsRequest$.subscribe((list: any[]) => {
this.list = list; // list from remote. This is going to be used on writeValue
});
}
Этот компонент реализует ControlValueAccessor
интерфейс. В writeValue
Я имею:
writeValue(value: ItemCode[]) {
if (isNullOrUndefined(this.list)) {
this.elementsRequest$.subscribe((list: any[]) => {
this.value = value;
});
} else {
this.value = value;
}
}
writeValue
метод пользовательского компонента должен ждать list
инициализация с результатом от ngOnInit
в связи с тем, что предоставленное значение от родительских компонентов должно быть одним из списка результатов.
Родительский компонент инициализирует этот компонент с [undefined, null, "a value"]
значения до прибытия списка результатов.
Желаемое поведение - сохранить в качестве значения последнее переданное значение из parent ("a value"
)
Вопрос в том:
- Как избежать трех подписок на
this.elementsRequest$
? - В случае необходимости подписки, как гарантировать, что пользовательский компонент поддерживает последнее предоставленное значение?