Получили интерполяцию ({{}}), где ожидалось выражение
У меня есть следующий HTML, но я получаю исключение. Как это исправить?
Ошибка Parser: получена интерполяция ({{}}), где ожидалось выражение в колонке 48 в [! (editForm.controls.field_item_exportExpression _ {{i}}?. dirty && & editForm.controls.field_item_exportExpression _ {{я}}?. недействителен)]
<div class="form-group">
<label class="form-control-label" for="field_exportExpression">exportExpression</label>
<input class="form-control" type="text" id="field_item_exportExpression_{{i}}" name="item_exportExpression_{{i}}" [(ngModel)]="datatype.items[i].exportExpression" required>
<div [hidden]="!(editForm.controls.field_item_exportExpression_{{i}}?.dirty && editForm.controls.field_item_exportExpression_{{i}}?.invalid)">
<small class="form-text text-danger" [hidden]="!editForm.controls.field_item_exportExpression_{{i}}?.errors?.required" dpTranslate="dataconfiguration.validation.required"> This field is
required. </small>
</div>
</div>
Не работает. Высказывание нежелательного токена [
найдено.
[hidden]="!editForm.controls.['item_exportExpression_' + i]?.errors?.required
Ниже не жалуются на [
, но жалуются Cannot read property '0' of undefined
[hidden]="!editForm.controls.item_exportExpression_[ i]?.errors?.required
Ответы
Ответ 1
шаблон
<div [hidden]="!checkIfInvalid(i, 'item_exportExpression_')">
<small class="form-text text-danger" [hidden]="isRequiredError(i, 'item_exportExpression_')" dpTranslate="dataconfiguration.validation.required"> This field is
required. </small>
</div>
компонент
checkIfInvalid( index: number, field: string ): boolean {
const control = this.getControl( index, field );
if ( control && control.dirty && !control.valid ) {
return true;
}
return false;
}
isRequiredError( index: number, field?: string ): boolean {
const control = this.getControl( index, field );
if ( control && control.getError( "required" ) ) {
return true;
}
return false;
}
Ответ 2
{{}}
никогда совпадает с [prop]="..."
или (event)="..."
<small class="form-text text-danger"
[hidden]="!editForm.controls.['field_item_exportExpression_' + i]?.errors?.required" dpTranslate="dataconfiguration.validation.required"> This field is
required.
</small>
Ответ 3
Есть 4 типа привязок:
- Привязка свойств, т.е.
[]
Требуется для оценки значений - Привязка модели т.е.
[()]
требует ничего особенного - Интерполяционная привязка, т.е.
{{}}
Может использоваться с общими атрибутами - Привязка к событиям ie
()
отлично работает с функциями
Чтобы ответить на ваш вопрос, что-то вроде этого у нас сработало:
<input type="checkbox" [id]="['model-'+i]" [(ngModel)]="model" name="model-{{i}}" (change)="changeHandler($event)" />
Ответ 4
Используйте как это вместо интерполяции
<button class="btn btn-primary" title="Edit" (click)="showEditModal(record.id)"><i class="fa fa-edit"></i></button>