Diretivas são formas fornecidas pelo Angular操作DOM
. As instruções são divididas em属性指令
e结构指令
.
Diretiva de atributo: Modifique a aparência ou comportamento de um elemento existente, envolva-o com []
.
Instruções estruturais: adicione e exclua nós DOM para modificar o layout, use *
como prefixo de instrução. [Tutoriais relacionados recomendados: "tutorial angular"]
1. Instrução integrada
1.1 *ngIf
渲染
nós DOM ou移除
nós DOM com base nas condições.
<div *ngIf="data.length == 0">Não há mais dados</div>
<div *ngIf="data.length > 0; then dataList else noData"></div> <ng-template #dataList>Lista de cursos</ng-template> <ng-template #noData>Não há mais dados</ng-template>
ng-template
é usado para definir modelos. Depois de usar ng-template
para definir um modelo, você pode usar ng-container
e templateOutlet
para usá-lo.
<ng-modelo #carregando> <button (click)="login()">login</button> <button (click)="sigup()">sigup</button> </ng-template> <ng-container *ngTemplateOutlet="carregando"> </ng-container>
1.2 [hidden]
显示
nós DOM ou隐藏
nós DOM (exibir) de acordo com as condições.
<div [hidden]="data.length == 0">Lista de cursos</div> <div [hidden]="data.length > 0">Não há mais dados</div>
1.3 *ngFor
percorre dados para gerar estrutura HTML
interface List { id: número nome: string idade: número } lista: Lista[] = [ {id: 1, nome: "Zhang San", idade: 20}, { id: 2, nome: "李思", idade: 30 } ]
<li *ngFor=" deixe o item da lista; seja i = índice; deixe isEven = par; deixe isOdd = ímpar; deixe isPrimeiro = primeiro; deixe isLast = último; " > </li>
<li *ngFor="let item da lista; trackBy: identificar"></li>
identificar(index, item){ retornar item.id; }
2. Requisitos de comando personalizados
: Defina a cor de fundo padrão para o elemento, a cor de fundo quando o mouse se move para dentro e a cor de fundo quando o mouse se move para fora.
<div [appHover]="{ bgColor: 'skyblue' }">Olá Angular</div>
importar { AfterViewInit, Diretiva, ElementRef, HostListener, Input } de "@angular/core" // Recebe o tipo de parâmetro interface Options { bgColor?: string } @Diretiva({ seletor: "[appHover]" }) classe de exportação HoverDirective implementa AfterViewInit { //Recebe parâmetros @Input("appHover") appHover: Options = {} // Elemento do nó DOM a ser operado: HTMLElement // Faz com que o nó DOM seja operado em constructor(private elementRef: ElementRef) { este.element = este.elementRef.nativeElement } // Defina a cor de fundo do elemento após a conclusão inicial do modelo de componente ngAfterViewInit() { this.element.style.backgroundColor = this.appHover.bgColor || "céu azul" } // Adiciona um evento de movimento do mouse ao elemento @HostListener("mouseenter") enter() { this.element.style.backgroundColor = "rosa" } //Adiciona evento de saída do mouse para o elemento @HostListener("mouseleave") leave() { this.element.style.backgroundColor = "céu azul" } }
A função do pipeline é格式化组件模板数据
.
1. Formato de data do pipeline integrado
,
formato de moeda,
maiúsculas Converter para
letras minúsculas Converter para minúsculas
Formato json dados json
{{data | data: "yyyy-MM-dd" }}
2. Requisitos de pipeline personalizados
: a string especificada não pode exceder Comprimento especificado
<!-- Este é um... --> {{'Este é um teste' | resumo: 3}}
// summary.pipe.ts importar {Pipe, PipeTransform} de '@angular/core'; @Cano({ nome: 'resumo' }); classe de exportação ResumoPipe implementa PipeTransform { transformar (valor: string, limite?: número) { if (!value) retornar nulo; deixe actualLimit = (limite)? return valor.substr(0, actualLimit) + '...'; } }
//app.module.ts importar { SummaryPipe } de './summary.pipe' @NgModule({ declarações: [ ResumoPipe ] });