Оценка обратного вызова по подписке в то время, когда наблюдается - PullRequest
0 голосов
/ 05 октября 2019

У меня есть Реактивная форма, в которой, по-видимому, функция внутри следующей подписки оценивает itm["value"].length-1 в тот момент, когда наблюдаемое излучает данные (и вызывает функцию подписки).

      this.formCtls[controlName] = new FormControl('', {updateOn: 'blur'});
      this.userForm.addControl(controlName, this.formCtls[controlName]);
      this.formCtls[controlName].valueChanges.subscribe(val=>{
        itm["value"][itm["value"].length-1]=val;
        this.renderDataArray();
      });

Однако я хочувыражение функции обратного вызова подписки itm["value"].length-1, которое будет оценено во время создания наблюдаемой / (FormControl).

Например, во время создания элемента управления формы itm["value"].length может быть только 2, но в то время, когда наблюдаемое излучает itm["value"].length, может быть 6 или 7 или любой другойномер. Как я могу (программно) «жестко связать» 2 (или его эквивалент) с обратным вызовом подписки?

Заранее большое спасибо!

1 Ответ

0 голосов
/ 05 октября 2019

Я не совсем уверен насчет ответа ниже. Это сработало в моем коде, но я не уверен, почему это сработало. Я пересмотрю этот предварительный ответ и опубликую обновление. В то же время, я был бы очень благодарен за любой вклад эксперта, так как я немного смущен и потерян среди этих наблюдаемых. ,,

this.formCtls[controlName] = new FormControl('', {updateOn: 'blur'});
      this.userForm.addControl(controlName, this.formCtls[controlName]);
      const idx = itm["value"].length-1;
      this.formCtls[controlName].valueChanges.subscribe(val=>{
        itm["value"][idx]=val;
        this.renderDataArray();
      });

...