угловой 2, почему звездочки (*)
в угловом документе 2,* и шаблон, мы знаем, что *ngIf, *ngSwitch, *ngFor можно расширить до тега шаблона. Мой вопрос:
Я думаю ngIf или ngFor без * можно также перевести и расширить к бирке шаблона угловым двигателем.
Так зачем же создавать странный символ звездочка (*) в угловой 2?
<hero-detail *ngIf="currentHero" [hero]="currentHero"></hero-detail>
<template [ngIf]="currentHero">
<hero-detail [hero]="currentHero"></hero-detail>
</template>
5 ответов:
синтаксис звездочки-это синтаксический сахар для более многословного синтаксиса шаблона, директива которого расширяется под капотом, вы можете использовать любой из этих параметров.
цитата docs:
звездочка-это "синтаксический сахар". Это упрощает ngIf и ngFor для и писатель, и читатель. Под капотом угловой заменяет звездочка версия с более подробной формой.
следующие два примера ngIf являются эффективно то же самое и мы можем написать в любом стиле:
<!-- Examples (A) and (B) are the same --> <!-- (A) *ngIf paragraph --> <p *ngIf="condition"> Our heroes are true! </p> <!-- (B) [ngIf] with template --> <template [ngIf]="condition"> <p> Our heroes are true! </p> </template>
Angular2 предлагает особый вид директив -структурные директивы
структурные директивы основаны на
<template>тег.The
*перед селектором атрибутов указывает, что вместо обычной директивы атрибутов или привязки свойств должна применяться структурная директива. Angular2 внутренне расширяет синтаксис до явного<template>тег.так как финал есть и то
<ng-container>элемент, который может использоваться аналогично<template>тег, но поддерживает более распространенный синтаксис короткой руки. Это, например, требуется, когда две структурные директивы должны применяться к одному элементу, который не является supportd.<ng-container *ngIf="boolValue"> <div *ngFor="let x of y"></div> </ng-container>
угловой обрабатывает элементы шаблона особым образом. Элемент
*синтаксис-это ярлык, который позволяет вам аннулировать запись всего<template>элемент. Позвольте мне показать вам, как это работает.используя этот
*ngFor="let t of todos; let i=index"де-сахар его в
template="ngFor: let t of todos; let i=index"который де-сахар в
<template ngFor [ngForOf]="todos" .... ></template>также угловые структурные директивы, такие как ngFor, ngIf и т. д. с префиксом
*просто чтобы отличить от этого пользовательские директивы и компонентыПосмотреть больше здесь
https://vsavkin.com/angular-2-template-syntax-5f2ee9f13c6a#.rcffirs7a
иногда вам может понадобиться
<a *ngIf="cond">например, когда это только один тег. иногда вы можете поместить ngIf вокруг нескольких тегов, не имея реального тега в качестве обертки, которая приведет вас к<template [ngIf]="cond">тег. как angular может знать, должен ли он отображать владельца директивы ngIf в конечном результате html или нет? так что это нечто большее, чем просто сделать код более ясным. это необходимая разница.
структурные директивы отвечают за HTML-макет. Они формируют или изменяют структуру DOM, обычно добавляя, удаляя или манипулируя элементами.
Как и в других директивах, вы применяете структурную директиву к хоста элемент. Затем директива делает все, что она должна делать этот элемент хоста и его потомки.
структурные директивы легко узнать. Звездочка ( * ) предшествует имени атрибута директивы, как в этом примере.
<p *ngIf="userInput">{{username}}</p>
Comments