Как очистить значение моего текстового поля Angular 2 ng-if, чтобы оно не передавалось - PullRequest
0 голосов
/ 13 ноября 2018

Прямо сейчас у меня есть две текстовые области, которые появляются условно через директиву * ngIf, основанную на пользовательском выборе, введенном ранее в предыдущем окне выбора. Это прекрасно работает, за исключением того факта, что если они вернутся назад и изменят значение поля выбора, текстовые области переключатся соответствующим образом, но предыдущее значение текстовой области не будет стерто, а просто скрыто от просмотра.

Я попытался добавить функцию, определенную в привязке моего компонента, к событию onchange, чтобы сбросить значение скрытого от просмотра текстового поля в пустую строку, но безрезультатно. Данные все еще сохраняются

<ss-multiselect-dropdown  (onchange)=" resetdcn()"   id="substatus" 
*ngIf="ddlCorrespondenceStatus == 'M'" class="report-multiselect"
                                 [options]="ddlCorrespondenceSubStatuses"                                     
[settings]="genericSearchMSDropdownSettings"
                                 [texts]="statusMSDropdownTextSettings"                                    
[(ngModel)]="selectedCorrespondenceSubStatuses"                                   
 (ngModelChange)="handleStatusSelection($event)">
        </ss-multiselect-dropdown>


        <ss-multiselect-dropdown  (onchange)=" resetdcn()"  
     *ngIf="ddlCorrespondenceStatus == 'G'" class="report-multiselect"
                                 [options]="ddlStatus"                                     
    [settings]="genericSearchMSDropdownSettings"
                                 [texts]="statusMSDropdownTextSettings"
                                 [(ngModel)]="selectedStatuses"                                     
    (ngModelChange)="handleStatusSelection($event)">
        </ss-multiselect-dropdown>
          </div>
        </td>
        <td>

      <textarea (ngModelChange)="handleCorrespondenceDcnSelection($event)"  
    *ngIf="ddlCorrespondenceStatus == 'M'" id="txtDcn"name="txtDcn" 
    type="text" 
    placeholder="Correspondondence DCN " class="form-control input-md" 
    [(ngModel)]="txtCorrespondenceDcn"></textarea>


      <textarea (ngModelChange)="handleClaimDcnSelection($event)" 
    *ngIf="ddlCorrespondenceStatus == 'G'" id="txtDcn"  name="txtDcn" 
    type="text" placeholder="Claim DCN " class="form-control input-md" 
    [(ngModel)]="txtDcn"></textarea>

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Проблема заключалась в том, что функция вызывалась неправильно, а не сама функция.Это должно быть (ngModelChange) = "resetdcn ()"

0 голосов
/ 13 ноября 2018

Внутри resetdcn() просто установите значения модели textarea на null. Они связаны с данными, поэтому вам не нужно делать ничего особенного.

public resetdcn(){
   // ...

   this.txtCorrespondenceDcn = null;
   this.txtDcn = null;
}
...