export class AppComponent {
title = 'app';
site = '深圳'; // 自己添加的属性
constructor() {}
}
<h1>
Welcome to {{ site }}!
</h1>
<h1>
Welcome to {{ site }}!
</h1>
<p>{{ site == '深圳'? '房子太贵我要离开': '哥甚是怀念深圳蜗居的日子' }}</p>
<!-- 事件绑定语法: (事件名)=函数() -->
<button (click)='clickHandler()'>点我</button>
export class AppComponent {
title = 'app';
site = '深圳';
// 点击事件处理函数
clickHandler(): void {
console.log('按钮被点击');
}
}
<!-- 如果需要事件对象, 那么传入$event即可 -->
<input type="text" (input)='inputHandler($event)'>
// 表单事件处理函数
inputHandler(e): void {
console.log(`表单最新值为: ${e.target.value}`);
}
// 表单事件处理函数
inputHandler(e): void {
this.site = e.target.value; // 修改site属性的值
}
<!-- isTure的值控制元素的添加移除 -->
<p *ngIf="isTure">控制我的添加与移除</p>
export class AppComponent {
title = 'app';
site = '深圳';
isTure = false; // 使用这个值控制元素
}
<!-- *ngIf, isTure的值控制元素的添加移除 -->
<div>
<p *ngIf="isTure">控制我的添加与移除</p>
<button (click)='clickAddOrRemove()'>{{ isTure? '移除': '添加' }}</button>
</div>
export class AppComponent {
title = 'app';
site = '深圳';
isTure = false; // 使用这个值控制元素
// 点击事件, 只要修改isTure属性, 就可以控制元素的添加移除
clickAddOrRemove(): void {
this.isTure = !this.isTure;
}
}
<!-- *ngFor, 里面采用的语法是固定格式 -->
<ul>
<li *ngFor="let city of cityList">{{ city }}</li>
</ul>
export class AppComponent {
title = 'app';
site = '深圳';
isTure = false; // 使用这个值控制元素
cityList = [
'北京',
'上海',
'广州',
'深圳'
];
}
<!-- *ngFor, 下面是获取下标并使用的语法 -->
<ul>
<li *ngFor="let city of cityList; let i = index">{{ i }} : {{ city }}</li>
</ul>
<ul>
<!-- *ngFor, 下面是添加trackBy的语法, trackBy要求赋值一个函数, 这里把trackByCity赋了过去 -->
<li *ngFor="let city of cityList; let i = index; trackBy: trackByCity">{{ i }} : {{ city }}</li>
</ul>
export class AppComponent {
cityList = [
'北京',
'上海',
'广州',
'深圳'
];
// trackBy函数会自动接收到ngFor遍历到的下标与item
// 这里因为数据结构比较简单, 把下标与值拼在一起作为元素ID返回
trackByCity(index: number, item: any) {
return index + '_' + item;
}
}
<ul>
<!-- 这里需要注意的是里面赋值时使用的?号, 没有它将报错 -->
<li *ngFor="let user of userList; trackBy: user?.id">{{ user.name }}</li>
</ul>
export class AppComponent {
userList = [
{name: '花花', age: 16, id: 10001},
{name: '草草', age: 18, id: 10002}
{name: '云云', age: 20, id: 10003},
{name: '朵朵', age: 15, id: 10004}
];
}
<!-- ngSwitch指令组,这里使用以前的site数据进行控制 -->
<!-- 其中的*ngSwitchCase因为不使用数据绑定,而是写死的字符串,所以里面的值添加单引号包裹 -->
<div [ngSwitch]='site'>
<p *ngSwitchCase="'北京'">北京冬天有暖气</p>
<p *ngSwitchCase="'上海'">上海冬天有空调</p>
<p *ngSwitchCase="'深圳'">深圳冬天要裹被</p>
<p *ngSwitchDefault>不管在哪, 只要不过冬天就好</p>
</div>
<!-- 使用[]属性指令语法动态修改元素的innerHTML -->
<div [innerHTML]="tpl"></div>
export class AppComponent {
title = 'app';
tpl = `<div>
<h4>我是数据里的字符串模版</h4>
<h4>我是数据里的字符串模版</h4>
</div>`;
}
<div>
<a [href]="aHref">点击跳转</a>
<img [src]="imgSrc"/>
</div>
export class AppComponent {
aHref = 'http://www.baidu.com';
imgSrc = 'http://www.baidu.com/img/bd_logo1.png';
}
<ul>
<li *ngFor="let city of cityList; let i = index" *ngIf="i % 2 == 0">{{ i }} : {{ city }}</li>
</ul>
<!-- 不能在一个元素上使用多个结构性指令,那么可以嵌套ng-container标签解决 -->
<ul>
<ng-container *ngFor="let city of cityList; let i = index">
<li *ngIf="i % 2 == 0">{{ i }} : {{ city }}</li>
</ng-container>
</ul>
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
// 导入表单模块
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule // 把表单模块配置进来
],
providers: [
],
bootstrap: [AppComponent]
})
export class AppModule { }
<div>
<h2>请输入新密码</h2>
<!-- 使用了双向数据绑定后, password的值会自动显示到表单, 表单改变时password也自动改变 -->
<input type="text" [(ngModel)]="password">
<span>{{ password }}</span>
</div>
export class AppComponent {
password = '默认密码';
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |