angular项目总结

833 阅读4分钟

1.获取的form表单的值

angular中FormBuilder用来实例化创建表格,以简化FormGroup,FormControl或者FormArray实例的创建过程,他会减少构建复杂表单时所需的样式代码的数量。

FormGroup把FormControl的值聚合进一个对象,他的key时每个空间的名字。当实例化Form Group时,在第一个参数传入一组子组件。每个子空间把自己注册进去。可以理解为formGroup传入数组的key值就是FormControlName所跟的值。

<nz-select

id="codetype"

formControlName="codeType"

nzFor="codeType"

nzPlaceHolder="请选择"

(ngModelChange)="setCodes($event)"

>

<nz-option nzLabel="普通的礼物码,玩家可以使用" nzValue="1"></nz-option>

<nz-option nzLabel="一个玩家只能使用一个码" nzValue="2"></nz-option>

<nz-option nzLabel="一个兑换码,能够被多次使用(可能有次数限制),多次使用" nzValue="3"></nz-option>

<nz-option nzLabel="邀请码" nzValue="4"></nz-option>

</nz-select>

</nz-form-control>


this.validateForm = this.fb.group({

goodsName: [null, [Validators.required]],

codeType: [null, [Validators.required]],

usenumber: [null, [Validators.required]],

currency: [null, [Validators.required]],

cardtag: [null, [Validators.required]],

});

const data = this.validateForm.value.codeType;//获取每个下拉框的值


2.传入参数时,要注意参数的数据类型

在该项目中,Id是一串符串,但请求期望参数传入的类型是数组,此时需要讲字符串id转成数组形式。如一下代码。

const arr: Array<string> = [];

arr.push(id);会改变原数组,返回的是数组的长度

3.数组遍历

this.invitationCodeService.getCodeList(this.pageIndex, this.pageSize).subscribe(res => {

const { total, list } = res.data;

this.total = total;

this.invitateCodeList = list.map(item => {

const { desc, type, binds, created_at, _id } = item;

return {

name: desc,

type,

coin: binds,

createtime: created_at,

id: _id,

};

});

});

es6的结构赋值,map遍历数组,返回的是一个新的数组。

4.结构性指令

构型指令会通过添加、删除和操纵它们的宿主元素等方式塑造或重塑 DOM 的结构。任何带有 * 的指令都是结构型指令。

*ng-if 指令用于在表达式为 false 时移除 HTML 元素。默认为false,如果if语句执行的结果为true,会添加移除元素,并显示出来。*ngif 指令不同于 *nghide, *nghide是通过控制css属性来控制元素的显示或者隐藏,而 *ngif 是从 DOM 中移除元素。

<nz-form-item *ngIf="isShow" nzFor="Codes"></nz-form-item>

this.isShow = data === 3 ? true : false;

*ngFor 是一个 Angular 的复写器(repeater)指令。用来遍历数组, 它会为数组中的每项数据复写它的宿主元素。

<tr><td *ngFor=" let item of items">{{item}}</td></tr>

当数据为这种结构式时,{id:1,birds:{{},{},{},{}}},就会生成多个td,此时,可以在li里放一个span,这样就把问题解决了。

> #5.es6字符串拼接:`字符串`+`字符串`,变量不用``包裹。模板字符串。

 public getCodeList(page, pageSize): Observable<any> {

return this.http.get('/invitation_code/model/list?page=' + page + '&pageSize=' + pageSize);

}

6.组件传值:input,output

##input

一个装饰器,用来把某个类字段标记为输入属性,并提供配置元数据。该输入属性会绑定到模板中的某个DOM 属性。当变更检测时,Angular 会自动使用这个 DOM 属性的值来更新此数据属性。

eg:在父组件中绑定属性,通过@input将该属性注入子组件中,然后子组件将拥有父组件的属性。

父组件:绑定属性

<ng-leaflet-shutter #shutterCmp [compareLayers]="compareLayers ></ng-leaflet-shutter>

子组件注入属性:

@Input() compareLayers

##output

一个装饰器,用于把一个类字段标记为输出属性,并提供配置元数据。凡是绑定到输出属性上的DOM 属性,Angular 在变更检测期间都会自动进行更新。你可以提供一个可选的仅供模板中使用的名字,在组件实例化时,会把这个名字映射到可绑定属性上。默认情况下,输出绑定的名字就是这个可绑定属性的原始名称。用法同input。

7.git操作

Git checkout -b dev  创建分支

Git branch -d dev  删除分支

Git add

Git commit -m ‘’  提交代码到本地仓

Git push  提交代码

Git pull origin dev  拉取远程分支的代码

Git status  查看代码更改

Git log  查看代码提交日志

8.总结

angular中组件功能都是单一的,可以将一个多次使用的功能封装成一个组件。将对数据的饿操作放到service中,将模块中需要的数据定以放到core下。