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

0 ответов

Другие вопросы по тегам