Я пытаюсь переназначить templateRefVar, доступный в угловом шаблоне. Я могу использовать ключевое слово «as», чтобы присвоить ему элемент, в котором он находится, как видно из приведенного ниже примера:
<input value="hello" #templateRefVar>
<!-- This works! -->
<div *ngIf="templateRefVar.value as value">
I can output {{ value }}
</div>
Однако мне трудно заставить его работать с помощью оператора &&, если я расширяю * ngIf, поскольку он выдаст ошибку:
<!-- I can't get it to work using && -->
<div *ngIf="(templateRefVar.value as value) === 'hello' && templateRefVar.value">
I cannot output {{ value }} and get an error.
</div>
На самом деле я ищу способ переназначения значения без необходимости использования директивы * ngIf. Я надеюсь, что есть стандартный API, о котором я не знаю, который может позволить мне переназначать переменные шаблона на лету, как показано в примере ниже (с желаемым мышлением ..)
<!-- Wish this worked : ( -->
<div *ngIf="templateRefVar.value === 'hello'" #reassignment="templateRefVar.value as value">
Hoping I can output {{ value }}
</div>
Обновление к комментариям:
Для удобства, если мне нужно выполнить проверку, как в формах:
<!-- check if password.errors is not null before attempting to show validation messages regarding password.errors -->
<ng-container *ngIf="!verifyPassword.pristine && password.errors as errors"
<!-- Using errors as shorter syntax rather than password.errors on different validation checks below -->
<div>
{{ errors.minlength }}
</div>
<div>
{{ errors.nextError }}
</div>
<div>
{{ errors.someOtherValidationMessage }}
</div>
</ng-container>
Именно поэтому я надеюсь, что в Angular есть API, который поддерживает переназначение templateRefVar в случае, если у меня более длинный * ngIf, более сложный, чем описанный выше.