Мне интересно знать, каково требование / вариант использования для изменения имени параметра привязки, такого как этот пример?
LDJ
31
Это просто, чтобы предотвратить повторение чего-то вроде tab [element] .val для каждого экземпляра. Я знаю, что могу решить проблему в компоненте, но я просто смотрел на то, как это сделать в шаблоне (хотя я не могу в конечном итоге с этим решением).
Сципион
2
@LDJ один пример использования: эффективность. Используйте образец stackblitz.com/angular/… <mat-checkbox [флажок] = " downndantsAllSelected (node)» [Indeterminate] = «downndantsPartiallySelected (node)» (change) = «todoItemSelectionToggle (node)»>> {{узел. item}} </ mat-checkbox> на самом деле дочерние_парциальные_выборы () вызывают нисходящие_связанные_выбранные (). Это означает, что иногда потомкиAllSelected вызывается дважды. Если есть локальная переменная, этого можно избежать.
Steven.Xi
3
<div *ngIf="{name:'john'} as user1; let user"> <i>{{user1|json}}</i> <i>{{user|json}}</i> </div>
dasfdsa
@dasfdsa Я верю user1 === user, таким образом, вы либо делаете, *ngIf="{name:'john'} as user1либо *ngIf="{name:'john'};let userкак в ответе юрзуи .
CPHPython
Ответы:
176
Обновить
Мы можем просто создать директиву как *ngIfи назвать ее*ngVar
это будет работать в большинстве случаев, но это не общее решение, так как полагается на variableправдивость
Кит
6
@Keith Спасибо за указание на это. Можете взглянуть на мой обновленный ответ
yurzui
3
Это должен быть новый ответ, поскольку он 1) более современен, чем другое решение 2) суммирует запросы на извлечение, связанные в текущем ответе, и экономит много времени 3) включает в себя примеры, встроенные, а не по внешней ссылке. Спасибо за показ этого. AFAIK любой объект, обернутый в {}, оценит как правдивый, так что это решение довольно надежно.
kvanberendonck
4
Например, расширяемые кнопки: *ngIf="{ expanded: false } as scope"и тогда, если вы используете загрузчик, вы можете просто использовать [ngClass]="{ 'in': scope.expanded }"и (click)="scope.expanded = !scope.expanded"вместо добавления чего-либо в ваши js/ tsфайлы.
<div *ngIf="{name:'john'} as user1; let user"> <i>{{user1|json}}</i> <i>{{user|json}}</i> </div>
user1 === user
, таким образом, вы либо делаете,*ngIf="{name:'john'} as user1
либо*ngIf="{name:'john'};let user
как в ответе юрзуи .Ответы:
Обновить
Мы можем просто создать директиву как
*ngIf
и назвать ее*ngVar
нг-var.directive.ts
с этой
*ngVar
директивой мы можем использовать следующееили
или
или
Пример Plunker Angular4 нгВар
Смотрите также
Оригинальный ответ
Угловой v4
1)
div
+ngIf
+let
2)
div
+ngIf
+as
Посмотреть
component.ts
3) Если вы не хотите создавать оболочку, как
div
вы можете использоватьng-container
Посмотреть
Как @Keith упоминается в комментариях
Смотрите обновление для другого подхода.
источник
variable
правдивость{}
, оценит как правдивый, так что это решение довольно надежно.*ngIf="{ expanded: false } as scope"
и тогда, если вы используете загрузчик, вы можете просто использовать[ngClass]="{ 'in': scope.expanded }"
и(click)="scope.expanded = !scope.expanded"
вместо добавления чего-либо в вашиjs
/ts
файлы.*ngIf
вместо нестандартного материала ngvar): github.com/angular/angular/issues/14985