Heim > Web-Frontend > js-Tutorial > Detaillierte Erläuterung der Vorlagensyntax in Angular

Detaillierte Erläuterung der Vorlagensyntax in Angular

青灯夜游
Freigeben: 2021-04-23 10:37:21
nach vorne
1751 Leute haben es durchsucht

Dieser Artikel gibt Ihnen eine detaillierte Einführung in die Vorlagensyntax in Angular. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Detaillierte Erläuterung der Vorlagensyntax in Angular

Empfohlene verwandte Tutorials: „Angular-Tutorial

Interpolation. Ausdruck

  • test-interpolation.component.ts
@Component({
  selector: 'app-test-interpolation',
  templateUrl: './test-interpolation.component.html',
  styleUrls: ['./test-interpolation.component.css']
})
export class TestInterpolationComponent implements OnInit {

  title = '插值表达式';

  constructor() { }

  ngOnInit() {
  }

  getValue(): string {
    return '值';
  }
}
Nach dem Login kopieren
  • test-interpolation.component.html
<div class="panel panel-primary">
  <div class="panel-heading">基插值语法</div>
  <div class="panel-body">
    <h3>
      欢迎来到 {{title}}!
    </h3>
    <h3>2+2 = {{2 + 2}}</h3>
    <h3>调用方法{{getValue()}}</h3>
  </div>
</div>
Nach dem Login kopieren

Vorlage Variablen: test-template-variables.component.ts: ]

    test-value-bind.component.ts
  • @Component({
      selector: &#39;app-test-template-variables&#39;,
      templateUrl: &#39;./test-template-variables.component.html&#39;,
      styleUrls: [&#39;./test-template-variables.component.css&#39;]
    })
    export class TestTempRefVarComponent implements OnInit {
    
      constructor() { }
    
      ngOnInit() {
      }
    
      public saveValue(value: string): void {
        console.log(value);
      }
    }
    Nach dem Login kopieren
    test-value-bind.component.html
  • <div class="panel panel-primary">
      <div class="panel-heading">模板变量</div>
      <div class="panel-body">
        <input #templateInput>
        <p>{{templateInput.value}}</p>
        <button class="btn btn-success" (click)="saveValue(templateInput.value)">局部变量</button>
      </div>
    </div>
    Nach dem Login kopieren

Ereignisbindung: ()

test-event-bind-component.ts

    @Component({
      selector: &#39;app-test-value-bind&#39;,
      templateUrl: &#39;./test-value-bind.component.html&#39;,
      styleUrls: [&#39;./test-value-bind.component.css&#39;]
    })
    export class TestValueBindComponent implements OnInit {
    
      public imgSrc = &#39;./assets/imgs/1.jpg&#39;;
    
      constructor() { }
    
      ngOnInit() {
      }
    }
    Nach dem Login kopieren
  • test-event-bind.component.html
    <div class="panel panel-primary">
      <div class="panel-heading">单向值绑定</div>
      <div class="panel-body">
        <img [src]="imgSrc" />
      </div>
    </div>
    Nach dem Login kopieren
  • Zwei-Wege-Bindung: [()]

test-twoway-binding.component.ts

    @Component({
      selector: &#39;app-test-event-binding&#39;,
      templateUrl: &#39;./test-event-binding.component.html&#39;,
      styleUrls: [&#39;./test-event-binding.component.css&#39;]
    })
    export class TestEventBindingComponent implements OnInit {
    
      constructor() { }
    
      ngOnInit() {
      }
    
      public btnClick(event: any): void {
        console.log(event + &#39;测试事件绑定!&#39;);
      }
    }
    Nach dem Login kopieren
  • test- twoway- binding.component.html
    <div class="panel panel-primary">
        <div class="panel-heading">事件绑定</div>
        <div class="panel-body">
            <button class="btn btn-success" (click)="btnClick($event)">点击按钮</button>
        </div>
    </div>
    Nach dem Login kopieren
  • font-resizer.component.ts

@Component({
  selector: &#39;app-test-twoway-binding&#39;,
  templateUrl: &#39;./test-twoway-binding.component.html&#39;,
  styleUrls: [&#39;./test-twoway-binding.component.css&#39;]
})
export class TestTwowayBindingComponent implements OnInit {

  public fontSizePx = 14;

  constructor() { }

  ngOnInit() {
  }

}
Nach dem Login kopieren
font-resizer.component.html

    <div class="panel panel-primary">
      <div class="panel-heading">双向绑定</div>
      <div class="panel-body">
        <app-font-resizer [(size)]="fontSizePx"></app-font-resizer>
        <div [style.font-size.px]="fontSizePx">Resizable Text</div>
      </div>
    </div>
    Nach dem Login kopieren
  • Eingebaute Strukturanweisungen
  • *ngIf
  • Test -ng-if.component.ts
    @Component({
      selector: &#39;app-font-resizer&#39;,
      templateUrl: &#39;./font-resizer.component.html&#39;,
      styleUrls: [&#39;./font-resizer.component.css&#39;]
    })
    export class FontResizerComponent implements OnInit {
    
      @Input()
      size: number | string;
    
      @Output()
      sizeChange = new EventEmitter<number>();
    
      constructor() { }
    
      ngOnInit() {
      }
    
      decrement(): void {
        this.resize(-1);
      }
    
      increment(): void {
        this.resize(+1);
      }
    
      resize(delta: number) {
        this.size = Math.min(40, Math.max(8, +this.size + delta));
        this.sizeChange.emit(this.size);
      }
    }
    Nach dem Login kopieren
  • test-ng-if.component.html

<div style="border: 2px solid #333">
  <p>这是子组件</p>
  <button (click)="decrement()" title="smaller">-</button>
  <button (click)="increment()" title="bigger">+</button>
  <label [style.font-size.px]="size">FontSize: {{size}}px</label>
</div>
Nach dem Login kopieren
*ngFor

test-ng-for.component.ts

    @Component({
      selector: &#39;app-test-ng-if&#39;,
      templateUrl: &#39;./test-ng-if.component.html&#39;,
      styleUrls: [&#39;./test-ng-if.component.css&#39;]
    })
    export class TestNgIfComponent implements OnInit {
    
      isShow = true;
    
      constructor() { }
    
      ngOnInit() {
      }
    }
    Nach dem Login kopieren
  • test- ng -for.component.html
    <div class="panel panel-primary">
      <div class="panel-heading">*ngIf的用法</div>
      <div class="panel-body">
        <p *ngIf="isShow" style="background-color:#ff3300">显示内容</p>
      </div>
    </div>
    Nach dem Login kopieren
  • ngSwitch

test-ng-switch.component.ts

    @Component({
      selector: &#39;app-test-ng-for&#39;,
      templateUrl: &#39;./test-ng-for.component.html&#39;,
      styleUrls: [&#39;./test-ng-for.component.css&#39;]
    })
    export class TestNgForComponent implements OnInit {
    
      races = [
        {name: &#39;star&#39;},
        {name: &#39;kevin&#39;},
        {name: &#39;kent&#39;}
      ];
    
      constructor() { }
    
      ngOnInit() {
      }
    
    }
    Nach dem Login kopieren
  • test-ng-switch.component.html
    <div class="panel panel-primary">
      <div class="panel-heading">*ngFor用法</div>
      <div class="panel-body">
        <h3>名字列表</h3>
        <ul>
          <li *ngFor="let name of names;let i=index;">
           {{i}}-{{name.name}}
          </li>
        </ul>
      </div>
    </div>
    Nach dem Login kopieren
  • Eingebaute Attributanweisung

Die Beziehung zwischen HTML-Attributen und DOM-Attributen

  • Es gibt eine Eins-zu-Eins-Zuordnungsbeziehung zwischen einer kleinen Anzahl von HTML-Attributen und DOM-Attributen, wie z. B. id;
    Einige HTML-Attribute haben kein entsprechendes DOM Attribute, wie z. B. colspan;
  • Einige DOM-Attribute haben keine entsprechenden HTML-Attribute, wie z. B. textContent;

Auch wenn die Namen gleich sind, sind HTML-Attribute und DOM-Attribute nicht dasselbe; Das Attribut gibt den Anfangswert an und der Wert des DOM-Attributs gibt den aktuellen Wert an. Der Wert des HTML-Attributs kann nicht geändert werden, der Wert der DOM-Eigenschaft kann geändert werden. Die Vorlagenbindung funktioniert über DOM-Eigenschaften und -Ereignisse, nicht über HTML-Attribute.

Hinweis:

Interpolationsausdruck und Eigenschaftsbindung sind dasselbe, und Interpolationsausdruck gehört zur DOM-Eigenschaftsbindung.
  • NgClass
  • test-ng-class.component.ts
  • @Component({
      selector: &#39;app-test-ng-switch&#39;,
      templateUrl: &#39;./test-ng-switch.component.html&#39;,
      styleUrls: [&#39;./test-ng-switch.component.css&#39;]
    })
    export class TestNgSwitchComponent implements OnInit {
    
      status = 1;
    
      constructor() { }
    
      ngOnInit() {
      }
    
    }
    Nach dem Login kopieren
  • test-ng-class.component.html
  • <div class="panel panel-primary">
      <div class="panel-heading">ngSwitch用法</div>
      <div class="panel-body">
        <div [ngSwitch]="status">
          <p *ngSwitchCase="0">Good</p>
          <p *ngSwitchCase="1">Bad</p>
          <p *ngSwitchDefault>Exception</p>
        </div>
      </div>
    </div>
    Nach dem Login kopieren

test-ng-class.component.less

@Component({
  selector: &#39;app-test-ng-class&#39;,
  templateUrl: &#39;./test-ng-class.component.html&#39;,
  styleUrls: [&#39;./test-ng-class.component.scss&#39;]
})
export class TestNgClassComponent implements OnInit {
  public currentClasses: {};

  public canSave = true;
  public isUnchanged = true;
  public isSpecial = true;

  constructor() { }

  ngOnInit() {
    this.currentClasses = {
      &#39;saveable&#39;: this.canSave,
      &#39;modified&#39;: this.isUnchanged,
      &#39;special&#39;: this.isSpecial
    };
  }
}
Nach dem Login kopieren

NgStyle

    test-ng-style.component.ts
  • <div class="panel panel-primary">
      <div class="panel-heading">NgClass用法</div>
      <div class="panel-body">
        <div [ngClass]="currentClasses">设置多个样式</div>
        <div [class.modified]=&#39;true&#39;></div>
      </div>
    </div>
    Nach dem Login kopieren
    test-ng-style.component.html
  • .saveable {
        font-size: 18px;
    }
    
    .modified {
        font-weight: bold;
    }
    
    .special {
        background-color: #ff3300;
    }
    Nach dem Login kopieren
    NgModel

test-ng-model.component.ts

@Component({
  selector: &#39;app-test-ng-style&#39;,
  templateUrl: &#39;./test-ng-style.component.html&#39;,
  styleUrls: [&#39;./test-ng-style.component.css&#39;]
})
export class TestNgStyleComponent implements OnInit {

  currentStyles: { };
  canSave = false;
  isUnchanged = false;
  isSpecial = false;

  constructor() { }

  ngOnInit() {
    this.currentStyles = {
      &#39;font-style&#39;: this.canSave ? &#39;italic&#39; : &#39;normal&#39;,
      &#39;font-weight&#39;: !this.isUnchanged ? &#39;bold&#39; : &#39;normal&#39;,
      &#39;font-size&#39;: this.isSpecial ? &#39;36px&#39; : &#39;12px&#39;
    };
  }

}
Nach dem Login kopieren

    test-ng-model.component.html
  • <div class="panel panel-primary">
      <div class="panel-heading">NgStyle用法</div>
      <div class="panel-body">
        <div [ngStyle]="currentStyles">
          用NgStyle批量修改内联样式!
        </div>
        <div [style.font-size]="isSpecial? &#39;36px&#39; : &#39;12px&#39;"></div>
      </div>
    </div>
    Nach dem Login kopieren
    widget

pipeline

Winkelige integrierte gemeinsame Pipes:
  • Großbuchstaben und Kleinbuchstaben
  • Obere case Buchstaben in Großbuchstaben umwandeln {
{'aaa' |. Großbuchstaben}}

Kleinbuchstaben in Kleinbuchstaben umwandeln {{'BBB' | Kleinbuchstaben}}

{{ Geburtstagsdatum: 'JJJJ-MM-TT: ss'}}

    Zahl
{

{ pi | Zahl: '2.2-2'}} 2.2-2: Es bedeutet, 2 ganze Zahlen und 2 Dezimalstellen beizubehalten.
2-2: Gibt mindestens 2 Dezimalstellen und maximal 2 Dezimalstellen an.

    Example
Test pippipe.component.ts
@Component({
  selector: &#39;app-test-ng-model&#39;,
  templateUrl: &#39;./test-ng-model.component.html&#39;,
  styleUrls: [&#39;./test-ng-model.component.css&#39;]
})
export class TestNgModelComponent implements OnInit {

  name = &#39;kevin&#39;;

  constructor() { }

  ngOnInit() {
  }

}
Nach dem Login kopieren

testpipe.component.html

<div class="panel panel-primary">
    <div class="panel-heading">NgModel的用法</div>
    <div class="panel-body">
        <p class="text-danger">ngModel只能用在表单类的元素上面</p>
        <input type="text" name="name" [(ngModel)]="name">
    </div>
</div>
Nach dem Login kopieren

non-Null Assertion
test-not-null-assert.component.ts

@Component({
  selector: &#39;app-test-pipe&#39;,
  templateUrl: &#39;./test-pipe.component.html&#39;,
  styleUrls: [&#39;./test-pipe.component.css&#39;]
})
export class TestPipeComponent implements OnInit {

  currentTime: Date = new Date();
  
  str = &#39;aaa&#39;;

  money = 34.567;


  constructor() {
  }

  ngOnInit() {
    window.setInterval(
      () => { this.currentTime = new Date() }
      , 1000);
  }
}
Nach dem Login kopieren

test-not-null-assert.component.html

<div class="panel panel-primary">
    <div class="panel-heading">管道的用法</div>
    <div class="panel-body">
      {{ currentTime | date:&#39;yyyy-MM-dd HH:mm:ss&#39; }}
    </div>
    <div class="panel-body">
      {{ str | uppercase }}
    </div>
    <div class="panel-body">
      {{ money | number: &#39;2.2-2&#39; }}
    </div>
</div>
Nach dem Login kopieren
Weitere Kenntnisse zum Thema Programmierung finden Sie unter:
    Programmierunterricht
  • ! !

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Vorlagensyntax in Angular. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage