Оператор Элвиса (?) В [ngModel] с именем параметра Dynami c не работает - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть объект данных obj с несколькими параметрами:

export interface obj {
  param1: number;
  param2: number;
  param3: number;
}

Я хотел бы динамически добавить mat-grid-tiles с mat-form-fields, отображающим их значение.

Я делаю это, создавая массив имен параметров:

params = ['param1', 'param2', 'param3']

Затем в своем коде HTML я использую мой mat-grid-tiles с *ngFor в именах параметров а затем назначьте ссылку на мой obj в [ngModel]:

<mat-grid-tile [colspan]=1 *ngFor="let param of params">
  <mat-form-field>
    <input matInput [ngModel]="coilData[params]" readonly>
  </mat-form-field>
</mat-grid-tile>

Это работает! Однако , поскольку мой obj изначально равен нулю, пока не выполнен вызов API, кажется, что он выдает сотни нулевых ошибок, например:

ERROR TypeError: Cannot read property 'param1' of null

Я понял, что могу просто использовать Оператор Элвиса: ?, однако я не могу понять, как использовать это на [ngModel], когда я динамически назначаю ему имена параметров следующим образом: [ngModel]="obj[param]" вместо обычного [ngModel]="obj?.param1.

Можно ли использовать оператор Элвиса при динамическом применении имен параметров к ngModel?

Ответы [ 2 ]

0 голосов
/ 19 марта 2020

Закончилась тем, что приняла предложение Херети c Обезьяны и использовала вместо него obj ? obj[param] : null, что в итоге сработало для меня.

0 голосов
/ 28 февраля 2020

Попробуйте

< ng-container *ngIf="coilData" >
<mat-grid-tile [colspan]=1 *ngFor="let param of params">
  <mat-form-field>
    <input matInput [ngModel]="coilData[params]" readonly>
  </mat-form-field>
</mat-grid-tile>
< ng-container />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...