У меня есть пользовательский компонент 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$
? - В случае необходимости подписки, как обеспечитьчто пользовательский компонент поддерживает последнее предоставленное значение?