试用Angular的HTML模板【绝对的新手】

经常会遇到对HTML模板周围的一些问题感到困惑,所以我会把这些问题记录下来。

数据绑定

import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  importData:string = "importMessage"//変数「importData」に「importMessage」を代入
}

<!--変数「importData」を表示する-->
<h1>{{importData}}</h1>
スクリーンショット 2017-07-30 7.24.11.png

双向数据绑定

接下来是双向数据绑定。
双向即是指从界面端到程序(ts)端,以及从程序端到界面端进行往返传送的方法。
若需双向绑定,则需要添加FormModule。

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import {FormsModule} from "@angular/forms";//ここを追加

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    FormsModule//ここを追加
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule {}

app.component.ts与常规数据绑定没有区别,只需要准备好变量即可。

import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  name = 'masao';
}

当在input标签中输入值时,该值会被发送到app.component.ts中,然后将其绑定到app.component.ts的name变量的{{name}}上。

<!--ts側へ送られます-->
<input  type="text" [(ngModel)]="name">
<!--ts側から受け取ります-->
<h1>{{name}}</h1>

スクリーンショット 2017-07-30 8.09.20.png

如果有条件分岐

如果是真的,就显示;如果是假的,就隐藏。

因此需要添加FormModule。

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import {FormsModule} from "@angular/forms";//ここを追加

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    FormsModule//ここを追加
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule {}

我把变量”flg”设为”false”。

import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  flg = false;//追加
}

请在*ngIf中指定true或false。

<h1 *ngIf="flg">テキスト1</h1><!--falseなので非表示-->
<h1 *ngIf="!flg">テキスト2</h1><!--trueなので表示-->
スクリーンショット 2017-07-30 18.13.40.png

当*ngIf=”false”时,将不再在HTML文件中显示。

条件分支转换

显示符合条件的物品。

需要添加FormModule。

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import {FormsModule} from "@angular/forms";//ここを追加

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    FormsModule//ここを追加
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule {}

我們將男性分配給變量sex作為性別。

import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  sex = "men";//追加
}

根据选择框中选择的性别,我正在制作一个能根据所选性别改变下方消息的功能。请参考双向数据绑定的机制,将选择框中的值发送到app.component.ts。

<!--selectボックスで値を指定して変数sexに送る-->
<select [(ngModel)]="sex">
  <option value="men"></option>
  <option value="women"></option>
  <option value="secret">秘密</option>
</select>

<!--変数sexの中身によって表示を変える-->
<div [ngSwitch]="sex">
  <div *ngSwitchCase="'men'">500円です。</div>
  <div *ngSwitchCase="'women'">300円です。</div>
  <div *ngSwitchDefault></div>
</div>

スクリーンショット 2017-07-30 18.21.53.png

您可以操控多个显示。

循环处理

重复显示数组的值等。

由于需要FormModule,所以需要添加。

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import {FormsModule} from "@angular/forms";//ここを追加

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    FormsModule//ここを追加
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule {}

在app.component.ts中,我们会准备一个数组来显示。

import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  names = ["masao0","masao1","masao2","masao3"];
}

逐一读取并绑定数组。

<ul>
  <li *ngFor="let name of names; let i=index">{{name}}</li><!--ここが繰り返される-->
</ul>
スクリーンショット 2017-07-30 8.05.37.png

正在显示数组中的所有内容。

添加要素

在这种情况下不需要FormsModule。
您可以将要指定的值赋给变量。

import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  url = "http://google.co.jp";
}

将变量分配给要素。

<ul>
  <a [href]="url">こちら</a>
</ul>
スクリーンショット 2017-07-30 18.33.49.png

我们可以看到在href中分配了变量url中的Google URL。

添加CSS

将CSS类分配给标签。

<h1 [ngClass]="{colorstyle:true}">masao1</h1>
<h1 [ngClass]="{colorstyle:false}">masao2</h1>
.colorstyle{
  color:red;
}
スクリーンショット 2017-07-30 18.41.09.png

增加活动

<button (click)="masao()">クリックイベント</button><!--クリックイベントを追加-->
import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  masao(){
    alert('this is masao!');
  }
}

スクリーンショット 2017-07-30 18.44.13.png

管道

{{text|uppercase}}
<!--uppercaseは大文字に変換する-->
import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  text:string = "masao";
}

スクリーンショット 2017-07-30 18.48.07.png

大写字母显示为Masao。

自制标签

我会制作一个组件。

kuniatsu$ ng generate component origintag

我会编辑新建的组件的HTML文件。
不是在app.component.html中,而是在origintag.component.html中。

<p>
this is origin.
</p>

自制的标签是使用选择器名称。

<app-origintag></app-origintag>
スクリーンショット 2017-07-30 18.55.22.png
广告
将在 10 秒后关闭
bannerAds