Установить значение из списка результатов запроса на реализацию writeValue - PullRequest
0 голосов
/ 07 февраля 2019

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