Вложенный ngModel в ng, для которого не отображаются значения, как ожидалось - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть массив подобных объектов, который упрощен из данных, поступающих из http-запроса.

displayArgs = [{paramName: 'Nam1', paramValue: ''}, {paramName: 'Nam1', paramType: ''}, {paramName: 'Nam1', paramType: ''}, {paramName: 'Nam1', paramType: ''}]

Я использую * ngFor для отображения этих значений, я заполняю эти paramValues, используя поле ввода,

          <div *ngIf="showParams" class="block-details templateParams">
            <table class="paramTable">
              <thead>
                <tr>
                  <th>paramName</th>
                  <th>paramValue</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td> {{arg.paramName}}</td>
                  <td><textarea formControlname="selectedParamValue" name="param-{{arg.paramName}}" id="param-{{arg.paramName}}" [ngModelOptions]="{standalone: true}"   [(ngModel)]="displayArgs[i].paramValue"></textarea>
                  </td>
                </tr>
              </tbody>
            </table>
           </div>

         </div>
          <div *ngIf="showParams" class="template-strings">
            <h4>Template String</h4>
            <p>you can copy paste the string below into your article template:</p>

            <span #template class="template-string">
                {{template_string}}
              </span>
            <a
            (click)="addTemplateToEditor(template, block)"
            class="c-btn c-btn--info blocks-btn"
          >
            <i class="fa fa-newspaper-o u-mr-xsmall"></i> Use Block
          </a>
          </div>
          <div class="errorMsg" *ngIf="showNoTemplateError">
              <p>No Parameters found for this block.</p>

              <div class="template-strings">
                  <h4>Template String</h4>
                  <p>you can copy paste the string below into your article template:</p>

                  <span #template class="template-string">
                    {{template_string}}
                  </span>
                  <a
                  (click)="addTemplateToEditor(template, block)"
                  class="c-btn c-btn--info blocks-btn"
                >
                  <i class="fa fa-newspaper-o u-mr-xsmall"></i> Use Block
                </a>
                </div>
            </div>
        </div>

Я пытаюсь вставить значения paramValues ​​в строку ввода.Вот что я пытаюсь отобразить в шаблонной строке.

   this.template_string = `$(kb.template_block('${this.block.data.template_block.name}'))`;
    if(this.displayArgs.length > 0 ){
      this.displayArgs.map(res =>{
      this.template_string =  this.template_string.slice(0, this.template_string.indexOf(')') ) + `, ${res.paramName} = '${res.paramValue}' ))`
      })

Проблема в том, что ngModel отображает обновленные значения в консоли, но не обновляет в строке.Я использую строку шаблона при изменении значения из выбора, подобного этому.

<select (change)="selectedTemplate($event)" formControlName="templateBlock" class="c-select select2-container select2-container--default select2-container--below" id="select1"  required>
                <option *ngFor="let block of blocks;let i = index;" [value]="block.block_id">{{block.name}}</option>
        </select>
...