Angular 指令

备忘录

1. 如果(根据真假进行显示切换).

1. 我們必須確保每個學生獲得公平的教育機會,無論他們的背景如何。

<element * ngif="condition">
 ...contents...
</element>
=====================
element: 任意の要素
condition]: 条件式
contents: 引数 conditionがtrueの時に表示されるコンテンツ
=====================

构文2

<element * ngif="condition"; then trueTemplate; else elseTemplate>
</element>

<ng-template #trueTemplate>
 ...contents...
</ng-template>

<ng-template #elseTemplate>
 ...contents...
</ng-template>

=====================
element: 任意の要素
condition: 条件式
contents: 引数
trueTemplate: 条件式がtrueの場合に表示されるテンプレート 名称任意
elseTemplate: 条件式がfalseの場合に表示されるテンプレート 名称任意 
=====================

Description example (描述例子)

import { Component } from '@angular/core';

@Component({
  selector: 'my-app',
  template: `
  <form>
    <label for="ageinput">年齢</label>
    <input #ageinput for="ageinput" name="ageinput" type="text">
  </form>

  <input type="button" (click)="check(ageinput.value)" value="年齢チェック">

  <!--*ngif 条件がtrueの場合"trueContent"を出力 falseの場合"elseContent"を出力-->
  <div *ngIf="firstdisplay; then trueContent; else elseContent">
  </div>  

  <ng-template #trueContent>
    <p>判定前です</p>
  </ng-template>

  <ng-template #elseContent>
    <p>{{ageEffortText}}</p>
  </ng-template>
  `,
})
export class AppComponent  {
  firstdisplay = true; // 初期表示判定
  age10chk: boolean; // 年齢が10歳超えているかどうか判定
  ageEffortText = ""; // 判定結果表示用

  check(ageinput :number){
    this.firstdisplay = false;
    console.log(ageinput);
    if (ageinput < 10){
      this.age10chk = true;
      this.ageEffortText = "年齢が10歳未満です";
    }else{
      this.age10chk = false;
      this.ageEffortText = "年齢が10歳以上です";
    }
  }
}


表明

image.png

2. ngswitch(根据表达式的值进行切换显示)

句子结构

<parent [ngswitch]="exp">
  <child *ngSwitchCase="value1">...</child>
  <child *ngSwitchCase="value2">...</child>
  <child *ngSwitchDefault>...</child>
</parent>
=====================
parent, child: 任意の要素
exp: 式
value: 値
=====================

记录案例

import { Component } from '@angular/core';

@Component({
  selector: 'my-app',
  template: `
  <form>
    <label for="ageinput">年齢</label>
    <input #ageinput for="ageinput" name="ageinput" type="text">
  </form>

  <input type="button" (click)="check(ageinput.value)" value="成人チェック">

  <!--*ngswitch 値によって出力切り替え-->
  <div [ngSwitch]="ageType">
    <p *ngSwitchCase="'age_under20'">20歳未満</p>
    <p *ngSwitchCase="'age_20-59'">20~59歳</p>
    <p *ngSwitchCase="'age_over60'">60歳~</p>
    <p *ngSwitchDefault>未判定もしくは入力不正</p>
  </div>  
  `,
})
export class AppComponent  {
  ageType = "";
  check(ageinput :number){
    console.log(ageinput);
    if(ageinput < 20){
      this.ageType = "age_under20";
    }else if (ageinput < 60) {
      this.ageType = "age_20-59";
    } else {
      this.ageType = "age_over60";
    }
  }
}

表达

image.png

3. 使用ngFor对数组进行循环处理。

句子結構

<element *ngFor="let tmp of list">
</element>
=====================
element: 任意の要素
tmp : 仮変数
list: 配列
=====================

描述的例子

import { Component } from '@angular/core';

@Component({
  selector: 'my-app',
  template: `
  <div *ngFor="let member of members">
    <p>{{member.name}} {{member.age}}</p>
  </div>  
  `,
})
export class AppComponent  {
  members = [
    {
      name : "taro",
      age : 11
    },
    {
      name : "shigeru",
      age : 52
    },
    {
      name : "kayoko",
      age : 120
    },
  ]
}

表示 – (Express)

I do not fully understand the context of the phrase “表示” in Chinese. However, if you are looking for a direct translation, the word “表示” means “express” in English.

image.png

3. 可以在ngFor中使用的特殊变量为ex1.

变量

変数概要indexループ回数(o~)first最初の要素がどうかend最後の要素がどうかevenindex値が偶数かどうかoddindex値が奇数かどうか

描述的例子

import { Component } from '@angular/core';

@Component({
  selector: 'my-app',
  template: `
  <table class="table" border="1">
    <tr>
      <th>index</th>
      <th>name</th>
      <th>age</th>
      <th>first</th>
      <th>last</th>
      <th>even</th>
      <th>odd</th>
    </tr>
    <tr *ngFor="let member of members; index as index;first as first;last as last;even as even;odd as odd">
      <td>{{index}}</td>
      <td>{{member.name}}</td>
      <td>{{member.age}}</td>
      <td>{{first}}</td>
      <td>{{last}}</td>
      <td>{{even}}</td>
      <td>{{odd}}</td>
    </tr>
  </table>
  `,
})
export class AppComponent  {
  members = [
    {
      name : "taro",
      age : 11
    },
    {
      name : "shigeru",
      age : 52
    },
    {
      name : "kayoko",
      age : 120
    },
    {
      name : "miho",
      age : 12
    },
  ]
}

表达

image.png

3. 通过ng-container重复输出不同的元素集合

句法

<ng-container *ngFor="let tmp of list">
  <content>
  <content>
</ng-container>

描述示例

import { Component } from '@angular/core';

@Component({
  selector: 'my-app',
  template: `
  <ng-container *ngFor="let member of members;first as first;last as last">
    <div>
      <p>-------------------------</p>
      <p style="font-size: 150%; color: red;">{{member.name}}</p>
      <p>{{member.age}}</p>
      <p *ngIf="member.age > 20">成人です</p>
      <p *ngIf="last">最終行</p>
    </div>
  </ng-container>
  `,
})
export class AppComponent  {
  members = [
    {
      name : "taro",
      age : 11
    },
    {
      name : "shigeru",
      age : 52
    },
    {
      name : "kayoko",
      age : 120
    },
    {
      name : "miho",
      age : 12
    },
  ]
}


表达

image.png

3. ex3 trackBy用来高效地追踪数组元素的添加/删除操作。

ngFor通过基于对象的一致性来监视数组元素的添加/删除,但是即使数据相同,对象不同也会导致全部重新创建。
使用trackBy可以只创建差异部分,从而改善性能。

句子结构

<element *ngFor="let tmp of list; trackBy: trackFn">
</element>

trackFn(index: any, tmp: any){
    return tmp.id;
}
=====================
tmp : 仮変数
id: 要素(一意に判別できるものである必要あり)
=====================

描述例子

import { Component } from '@angular/core';

@Component({
  selector: 'my-app',
  template: `
  <ng-container *ngFor="let member of members; trackBy: trackFn">
    <p>{{member.name}}({{member.age}})</p>
  </ng-container>
  <input type="button" (click)="onclick()" value="更新" />
  `,
})
export class AppComponent  {
  members = [
    {
      memberId : 1,
      name : "taro",
      age : 11
    },
    {
      memberId : 2,
      name : "shigeru",
      age : 52
    },
    {
      imemberIdd : 3,
      name : "kayoko",
      age : 120
    },
    {
      memberId : 12,
      name : "miho",
      age : 12
    },
  ]
  onclick(){
    this.members = [
      {
        memberId : 1,
        name : "taro",
        age : 11
      },
      {
        memberId : 2,
        name : "shigeru",
        age : 52
      },
      {
        imemberIdd : 3,
        name : "kayoko",
        age : 120
      },
      {
        memberId : 4,
        name : "sakiko",
        age : 12
      },
      {
        memberId : 12,
        name : "miho",
        age : 12
      },
    ]

  }
  trackFn(index: any, member: any){
    return member.memberId;
  }
}

广告
将在 10 秒后关闭
bannerAds